IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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'étudierons 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 deux 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és 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, certains en-têtes sont plutôt caractéristiques des requêtes, tandis que d'autres sont plutôt utilisés 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és, à 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'interrogation

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)

:

Ils sont utilisés dans les en-têtes.
Leur 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

Copyright © 2006 Mathieu Lemoine. Aucune reproduction, même partielle, ne peut être faite de ce site ni 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.