Une requête HTTP est un ensemble de lignes envoyé au serveur par le navigateur.
Elle comprend:
une ligne de requête: c'est une ligne précisant le type de document demandé,
la méthode qui doit être appliqué, et la version du protocole utilisée. La ligne comprend
trois éléments devant être séparé par un espace:
La méthode
L'URL
La version du protocole utilisé par le client (généralement HTTP/1.0)
Les champs d'en-tête de la requête: il s'agit d'un ensemble de lignes
facultatives permettant de donner des informations supplémentaires sur la requête
et/ou le client (Navigateur,système d'exploitation,...). Chacune de ces lignes est
composé d'un nom qualifiant le type d'en-tête, suivi de deux points (:) et de
la valeur de l'en-tête
Le corps de la requête: C'est un ensemble de ligne optionnel devant être
séparé des lignes précédentes par une ligne vide et permettant
par exemple un envoi de données par une commande POST lors de l'envoi de données
au serveur par un formulaire
Une requête HTTP a donc la syntaxe suivante (<crlf> signifie retour chariot ou saut de ligne):
METHODE URL VERSION<crlf>
EN-TETE : Valeur<crlf>
.
.
.
EN-TETE : Valeur<crlf>Ligne vide<crlf>
CORPS DE LA REQUETE
Voici donc un exemple de requête HTTP:
GET http://www.commentcamarche.net HTTP/1.0
Accept : text/html
If-Modified-Since : Saturday, 15-January-2000 14:37:11 GMT
User-Agent : Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)
Une réponse HTTP est un ensemble de lignes envoyé au navigateur par le serveur.
Elle comprend:
une ligne de statut: c'est une ligne précisant la version du protocole utilisé et
l'état du traitement de la requête à l'aide d'un code et d'un texte explicatif. La ligne comprend
trois éléments devant être séparé par un espace:
La version du protocole utilisé
Le code de statut
La signification du code
Les champs d'en-tête de la réponse: il s'agit d'un ensemble de lignes
facultatives permettant de donner des informations supplémentaires sur la réponse
et/ou le serveur. Chacune de ces lignes est
composé d'un nom qualifiant le type d'en-tête, suivi de deux points (:) et de
la valeur de l'en-tête
Le corps de la réponse: Il contient le document demandé
Une réponse HTTP a donc la syntaxe suivante (<crlf> signifie retour chariot ou saut de ligne):
VERSION-HTTP CODE EXPLICATION<crlf>
EN-TETE : Valeur<crlf>
.
.
.
EN-TETE : Valeur<crlf>Ligne vide<crlf>
CORPS DE LA REPONSE
Voici donc un exemple de réponse HTTP:
HTTP/1.0 200 OK
Date : Sat, 15 Jan 2000 14:37:12 GMT
Server : Microsoft-IIS/2.0
Content-Type : text/HTML
Content-Lentgh : 1245
Last-Modified : Fri, 14 Jan 2000 08:25:13 GMT
Ce sont les codes que vous voyez lorsque le navigateur n'arrive pas à vous
fournir la page demandée. Le code de réponse est constitué de trois chiffres:
le premier indique la classe de statut et les suivants la nature exacte de l'erreur.
Code
Message
Description
10x
Message d'information
Ces codes ne sont pas utilisés dans la version 1.0 du protocole
20x
Réussite
Ces codes indiquent le bon déroulement de la transaction
200
OK
La requête a été accomplie correctement
201
CREATED
Elle suit une command POST, elle indique la réussite,
le corps du reste du document est sensé indiquer l'URL
a laquelle le document nouvellement créé devrait se trouver.
202
ACCEPTED
La requête a été acceptée, mais la procédure qui suit
n'a pas été accomplie
203
PARTIAL INFORMATION
Lorsque ce code est reçu en réponse à une commande GET, cela
indique que la réponse n'est pas complète.
204
NO RESPONSE
Le serveur a reçu la requête mais il n'y a pas d'information a renvoyer
205
RESET CONTENT
Le serveur indique au navigateur de supprimer le contenu des champs d'un formulaire
205
PARTIAL CONTENT
Il s'agit d'une réponse à une requête comportant l'en-tête range.
Le serveur doit indiquer l'en-tête content-Range
30x
Redirection
Ces codes indiquent que la ressource n'est plus à l'emplacement indiqué
301
MOVED
Les données demandées ont été transférées a une
nouvelle adresse
302
FOUND
Les données demandées sont à une nouvelle URL, mais ont cependant
peut-être été déplacées depuis...
303
METHOD
Cela implique que le client doit essayer une nouvelle adresse, en essayant de préférence
une autre méthode que GET
304
NOT MODIFIED
Si le client a effectué une commande GET conditionnelle (en demandant
si le document a été modifié depuis la dernière fois) et que le document
n'a pas été modifié il renvoie ce code.
40x
Erreur dûe au client
Ces codes indiquent que la requête est incorrecte
400
BAD REQUEST
La syntaxe de la requête est mal formulée ou est impossible à satisfaire
401
UNAUTHORIZED
Le paramètre du message donne les spécifications des formes d'autorisation acceptables.
Le client doit reformuler sa requête avec les bonnes données d'autorisation
402
PAYMENT REQUIRED
Le client doit reformuler sa demande avec les bonnes données de paiement
403
FORBIDDEN
L'accès à la ressource est tout simplement interdit
404
NOT FOUND
Classique! Le serveur n'a rien trouvé à l'adresse spécifiée. Parti
sans laisser d'adresse ... :)
50x
Erreur dûe au serveur
Ces codes indiquent qu'il y a eu une erreur interne du serveur
500
INTERNAL ERROR
Le serveur a rencontré une condition inattendue qui l'a empéché
de donner suite à la demande (Comme quoi il leur en arrive des trucs aux serveurs ...)
501
NOT IMPLEMENTED
Le serveur ne supporte pas le service demandé (on ne peut pas tout savoir faire ...)
502
BAD GATEWAY
Le serveur a reçu une réponse invalide de la part du serveur auquel il essayait
d'accéder en agissant comme une passerelle ou un proxy
503
SERVICE UNAVAILABLE
Le serveur ne peut pas vous répondre à l'instant présent,
car le trafic est trop dense (Toutes les lignes de votre correspondant sont occupées
veuillez rappeler ultérieurement)
504
GATEWAY TIMEOUT
La réponse du serveur a été trop longue vis à vis du temps
pendant lequel la passerelle était préparée à l'attendre.
(Le temps qui vous était imparti est maintenant écoulé ...)