Le protocole HTTP (HyperText Transfer Protocol) est le protocole le plus utilis� sur Internet depuis 1990. La version 0.9 �tait uniquement destin�e � transf�rer des donn�es sur Internet (en particulier des pages Web �crites en HTML. La version 1.0 du protocole (la plus utilis�e) permet d�sormais de transf�rer des messages avec des en-t�tes d�crivant le contenu du message en utilisant un codage de type MIME.
Le but du protocole HTTP est de permettre un transfert de fichiers (essentiellement au format HTML) localis�s gr�ce � une cha�ne de caract�res appel�e URL entre un navigateur (le client) et un serveur Web.
La communication entre le navigateur et le serveur se fait en deux temps :
Une requ�te HTTP est un ensemble de lignes envoy� au serveur par le navigateur. Elle comprend :
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)
Commande | Description |
---|---|
GET | Requ�te de la ressource situ�e � l'URL sp�cifi�e |
HEAD | Requ�te de l'en-t�te de la ressource situ�e � l'URL sp�cifi�e |
POST | Envoi de donn�es au programme situ� � l'URL sp�cifi�e |
PUT | Envoi de donn�es � l'URL sp�cifi�e |
DELETE | Suppression de la ressource situ�e � l'URL sp�cifi�e |
Nom de l'en-t�te | Description |
---|---|
Accept | Type de contenu accept� par le browser (par exemple text/html). Voir types MIME |
Accept-Charset | Jeu de caract�res attendu par le browser |
Accept-Encoding | Codage de donn�es accept� par le browser |
Accept-Language | Langage attendu par le browser (anglais par d�faut) |
Authorization | Identification du browser aupr�s du serveur |
Content-Encoding | Type de codage du corps de la requ�te |
Content-Language | Type de langage du corps de la requ�te |
Content-Length | Longueur du corps de la requ�te |
Content-Type | Type de contenu du corps de la requ�te (par exemple text/html). Voir types MIME |
Date | Date de d�but de transfert des donn�es |
Forwarded | Utilis� par les machines interm�diaires entre le browser et le serveur |
From | Permet de sp�cifier l'adresse e-mail du client |
From | Permet de sp�cifier que le document doit �tre envoy� s'il a �t� modifi� depuis une certaine date |
Link | Relation entre deux URL |
Orig-URL | URL d'origine de la requ�te |
Referer | URL du lien � partir duquel la requ�te a �t� effectu�e |
User-Agent | Cha�ne donnant des informations sur le client, comme le nom et la version du navigateur, du syst�me d'exploitation |
Une r�ponse HTTP est un ensemble de lignes envoy�es au navigateur par le serveur. Elle comprend :
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-Length : 1245 Last-Modified : Fri, 14 Jan 2000 08:25:13 GMT
Nom de l'en-t�te | Description |
---|---|
Content-Encoding | Type de codage du corps de la r�ponse |
Content-Language | Type de langage du corps de la r�ponse |
Content-Length | Longueur du corps de la r�ponse |
Content-Type | Type de contenu du corps de la r�ponse (par exemple text/html). Voir types MIME |
Date | Date de d�but de transfert des donn�es |
Expires | Date limite de consommation des donn�es |
Forwarded | Utilis� par les machines interm�diaires entre le browser et le serveur |
Location | Redirection vers une nouvelle URL associ�e au document |
Server | Caract�ristiques du serveur ayant envoy� la r�ponse |
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 commande POST, elle indique la r�ussite, le corps du reste du document est sens� indiquer l'URL � 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 � renvoyer |
205 | RESET CONTENT | Le serveur indique au navigateur de supprimer le contenu des champs d'un formulaire |
206 | 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 � 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 due 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 due 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�...) |
Pour plus d'informations sur le protocole HTTP, le mieux est de se reporter à la RFC 1945 expliquant de manière détaillée le protocole :