Internet - Le protocole HTTP

Introduction au protocole HTTP

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.

Communication entre navigateur et serveur

La communication entre le navigateur et le serveur se fait en deux temps :

Communication entre navigateur et serveur

En r�alit� la communication s'effectue en plus de temps si on consid�re le traitement de la requ�te par le serveur. Etant donn� que l'on s'int�resse uniquement au protocole HTTP, le traitement du c�t� serveur ne sera pas explicit� dans le cadre de cet article...
Si ce sujet vous int�resse, r�f�rez-vous � l'article sur le traitement des CGI.

Requ�te HTTP

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)

Commandes

CommandeDescription
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

En-t�tes

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

R�ponse HTTP

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

En-t�tes de r�ponse

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

Les codes de 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�...)

Plus d'informations

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 :