Le Protocole HTTP


précédentsommairesuivant

I. Généralités

I-A. Présentation

Il s'agit d'un protocole reposant sur un unique échange initié par le client. Il est synchrone : le serveur ne peut commencer à répondre avant que le client ait fini d'envoyer la requête.
Il en existe trois versions : 0.9 (1991), 1.0 (février 1997) et 1.1 (octobre 2000). La version 0.9 est complètement obsolète et nous ne l'étudieront pas ici. De nos jours, la version 1.0 est très rarement utilisée ; elle est d'ailleurs obsolète. Les principaux changements entre les versions 1.0 et 1.1 sont l'ajout de 2 types de requêtes ainsi que la possibilité d'héberger plusieurs sites Web sur un même serveur dans la version 1.1.
L'échange entre le client et le serveur se fait en mode texte. Le charset généralement utilisé est l'US-ASCII sur 8 bits. Il est cependant possible que cet encoding soit modifié selon le client ou le serveur.

I-B. Structure

Les requêtes et les réponses sont bâties sur le même modèle :

 
Sélectionnez
{Ligne d'introduction}{SEP}
{En-têtes séparées par des {SEP} }
{SEP}{SEP}
{Corps}

En théorie, le seul élément capable de différencier une requête d'une réponse, c'est la Ligne d'introduction.
En fait, certaines en-têtes sont plutôt caractéristiques des requêtes, tandis que d'autres sont plutôt utilisées pour les réponses. Les requêtes ont cette forme :

 
Sélectionnez
{Nom}{HSEP}{Valeur}

Le séparateur HSEP représente la combinaison deux points + espace ": ". Le protocole HTTP définit un ensemble d'en-têtes standard. Des en-têtes supplémentaires peuvent être ajoutées, à la condition que leur nom commence par "X-".

I-C. Caractères Interdits ou Réservés

Certains caractères sont interdits ou réservés à certains endroits du message :

nom du caractère code US-ASCII notation courante réserves et interdictions
retour chariot
(Carriage Return, CR)
0x0D (13) \r Il fait partie du séparateur SEP.
Son utilisation à l'intérieur de la Ligne d'Introduction et des en-têtes est donc interdite.
nouvelle ligne
(New Line ou Line Feed, LF)
0x0A (10) \n Il fait partie du séparateur SEP.
Son utilisation à l'intérieur de la Ligne d'Introduction et des en-têtes est donc interdite.
point d'interogation 0x3F (63) ? Il est utilisé à certains endroits de la Ligne d'Introduction.
Son utilisation à l'intérieur de celle-ci est donc réglementée.
égal 0x3D (31) = Il est utilisé à certains endroits de la Ligne d'Introduction.
Son utilisation à l'intérieur de celle-ci est donc réglementée.
esperluette
(et commercial)
0x26 (38) & Il est utilisé à certains endroits de la Ligne d'Introduction.
Son utilisation à l'intérieur de celle-ci est donc réglementée.
dièse 0x23 (35) # Il est utilisé à certains endroits de la Ligne d'Introduction.
Son utilisation à l'intérieur de celle-ci est donc réglementée.
pourcentage 0x25 (37) % Il est utilisé dans le cadre de l'URL-Encoding.
Son utilisation à l'intérieur de celui-ci est donc réglementée.
deux points 0x3A (58) : Il sont utilisés dans les en-têtes.
Son utilisation à l'intérieur de celles-ci est donc réglementée.
espace
(Space, SP)
0x20 (32) ' ' ou " " Il est utilisé dans la Ligne d'Introduction et les en-têtes.
Son utilisation à l'intérieur de celles-ci est donc réglementée.

Le séparateur SEP correspond en fait au duo "\r\n" (Carriage Return, New Line : CRLF)

I-D. L'URL-Encoding

L'URL-Encoding permet d'insérer les caractères réservés, ou des caractères accentués, dans certaines parties des messages HTTP.
Cet encodage consiste simplement à remplacer un caractère interdit par : le caractère pourcentage suivi des deux caractères représentant le code hexadécimal US-ASCII du caractère à remplacer.
Exemple : le séparateur SEP (\r\n) deviendrait : %0D%0A
Pour décoder une chaîne URL-Encodée, il suffit de remplacer le triplet %?? par le caractère dont le code US-ASCII correspond.


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2006 Mathieu Lemoine. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.