HTTP - Réponses

Après avoir reçu et interprété un message de requête, un serveur répond par un message de réponse HTTP:


     
  • A Status-line
  • Zero or more header (General|Response|Entity) fields followed by CRLF
  • An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
  • Optionally a message-body

Les sections suivantes expliquent chacune des entités utilisées dans un message de réponse HTTP.

Ligne d'état des messages

Une ligne d'état se compose de la version du protocole suivie d'un code d'état numérique et de sa phrase textuelle associée. Les éléments sont séparés par des caractères d'espace SP.

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

Version HTTP

Un serveur prenant en charge HTTP version 1.1 renverra les informations de version suivantes:

HTTP-Version = HTTP/1.1

Code d'état

L'élément Status-Code est un entier à 3 chiffres où le premier chiffre du Status-Code définit la classe de réponse et les deux derniers chiffres n'ont aucun rôle de catégorisation. Il y a 5 valeurs pour le premier chiffre:

SN Code et description
1 1xx: Informational

Cela signifie que la demande a été reçue et que le processus se poursuit.

2 2xx: Success

Cela signifie que l'action a été reçue, comprise et acceptée avec succès.

3 3xx: Redirection

Cela signifie que des mesures supplémentaires doivent être prises pour terminer la demande.

4 4xx: Client Error

Cela signifie que la demande contient une syntaxe incorrecte ou ne peut pas être satisfaite.

5 5xx: Server Error

Cela signifie que le serveur n'a pas réussi à répondre à une demande apparemment valide.

Les codes d'état HTTP sont extensibles et les applications HTTP ne sont pas tenues de comprendre la signification de tous les codes d'état enregistrés. Une liste de tous les codes d'état a été donnée dans un chapitre séparé pour votre référence.

Champs d'en-tête de réponse

Nous étudierons l'en-tête général et l'en-tête d'entité dans un chapitre séparé lorsque nous apprendrons les champs d'en-tête HTTP. Pour l'instant, vérifions quels sont les champs d'en-tête de réponse.

Les champs d'en-tête de réponse permettent au serveur de transmettre des informations supplémentaires sur la réponse qui ne peuvent pas être placées dans la ligne d'état. Ces champs d'en-tête donnent des informations sur le serveur et sur l'accès supplémentaire à la ressource identifiée par Request-URI.

  • Accept-Ranges

  • Age

  • ETag

  • Location

  • Proxy-Authenticate

  • Retry-After

  • Server

  • Vary

  • WWW-Authenticate

Vous pouvez introduire vos champs personnalisés au cas où vous allez écrire votre propre client et serveur Web personnalisés.

Exemples de message de réponse

Maintenant, mettons tout cela ensemble pour former une réponse HTTP pour une demande de récupération du hello.htm page du serveur Web s'exécutant sur tutorialspoint.com

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed
<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>

L'exemple suivant montre un message de réponse HTTP affichant une condition d'erreur lorsque le serveur Web n'a pas pu trouver la page demandée:

HTTP/1.1 404 Not Found
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Connection: Closed
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
   <title>404 Not Found</title>
</head>
<body>
   <h1>Not Found</h1>
   <p>The requested URL /t.html was not found on this server.</p>
</body>
</html>

Voici un exemple de message de réponse HTTP indiquant une condition d'erreur lorsque le serveur Web a rencontré une version HTTP incorrecte dans la requête HTTP donnée:

HTTP/1.1 400 Bad Request
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Content-Type: text/html; charset=iso-8859-1
Connection: Closed
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
   <title>400 Bad Request</title>
</head>
<body>
   <h1>Bad Request</h1>
   <p>Your browser sent a request that this server could not understand.</p>
   <p>The request line contained invalid characters following the protocol string.</p>
</body>
</html>