HTTP : Un protocole synchrone
A l'instar de beaucoup de protocoles de communication (comme l'IMAP par exemple), HTTP est un protocole synchrone. C'est-à-dire que les deux processus d'envoi de requête et de réception de la réponse s'effectuent de manière synchronisée. Chacune étant en lien avec l'autre.
Jusque là rien de bien nouveau a ce que vous avez sans doutes déjà compris auparavant. Seulement la requête n'est pas seulement constituée de l'adresse de la page que vous souhaitez récupérer. De la même façon la réponse elle contient d'autres informations que le simple fichier (généralement un document html) que le client souhaite téléchargée.
Nous allons donc commencer par voir de quoi son composer les requêtes HTTP. J'expliquerais également le concept de "méthode" au sein du protocole HTTP, et nous verrons rapidement ensemble chacune d'entre elles.
Composition d'une requête HTTP
Comme je l'ai dit précédemment, en HTTP une requête ce n'est pas composé de la simple url que vous souhaitez joindre. En effet il faut fournir au serveur HTTP d'autres paramètres afin que ce dernier puisse répondre à votre sollicitation.
Commande
Avec le protocole HTTP, trois paramètres au minimum sont à fournir afin de pouvoir constituer une requête :
- la méthode utilisée
- le nom du fichier souhaité
- la version du protocole employée
Ces informations doivent être disposées sur la première ligne de votre requête, séparées par un espace comme le montre le petit schéma ci-dessous :
En-tête
Vous venez de le voir sur la petite figure, une requête est aussi constituée d'autres informations. Il s'agit de ce que l'on appelle les champs de requête. C'est un ensemble d'informations facultatives que vous pouvez passer au serveur web.
C'est par exemple grâce aux informations fournies ici que le serveur web peut connaître le navigateur que vous utilisez. Nous verrons dans un autre chapitre quelles sont les informations qui sont acceptées ici.
Corps
Enfin, dernier point, il s'agit du corps de votre requête. Si vous avez déjà manipulé des données de formulaire avec du PHP et du html simple, vous vous êtes sans doutes déjà demandés comment étaient transmises les variables entre le navigateur et le serveur avec la méthode POST. Contrairement aux données circulant avec la méthode GET, ces dernières sont « invisibles » et n'apparaissent pas dans l'url.
C'est ici qu'elles sont transmises. Directement dans le corps de votre requête. Elles prennent la même forme que les variables passées dans le GET ;
variable=valeur&variable2=valeur2
Les méthodes HTTP
En HTTP, les méthodes sont en fait des sortes de commandes. Elles vous permettront de spécifier au serveur le type d'action que vous souhaitez que réalise votre requête.
Il existe cinq méthodes :
Méthode Description
GET Requête de la ressource située à l'URL spécifiée
HEAD Requête de la ressource située à l'URL spécifiée (la réponse ne contient que l'entête, et pas le contenu de la ressource)
POST Envoi de données au programme situé à l'URL spécifiée (le corps de la requête peut être utilisé)
PUT Envoi de données à l'URL spécifiée (idem POST)
DELETE Suppression de la ressource située à l'URL spécifiée
Malheureusement en html les formulaires ne supportent pour le moment que les méthodes GET et POST. Il s'agit d'une restriction bien souvent regrettée que l'on pallie généralement avec des surcouches en javascript (avec ce que l'on appelle vulgairement l'AJAX).
Néanmoins l'arrivée du support des méthodes PUT et DELETE par html et un des points abordés dans le document de travail de HTML5.