Le protocole HTTP
L'Hypertext Transfer Protocol (HTTP) est un protocole de la couche application. Il est le fondement de l'échange de données pour le World Wide Web. Comme tous les protocoles applicatifs d'Internet, HTTP est orienté texte.
HTTP version 1.1 est défini par un ensemble de RFC (Requests For Comments) maintenu par un groupe de travail de l'IETF (Internet Engineering Task Force) :
- RFC 7230 - HTTP/1.1: Message Syntax and Routing - Description de la structure des messages échangés et des procédures de connexion
- RFC 7231 - HTTP/1.1: Semantics and Content - Description des méthodes, des codes d'état et des en-têtes
- RFC 7232 - HTTP/1.1: Conditional Requests - Le support des requêtes conditionnelles
- RFC 7233 - HTTP/1.1: Range Requests - Le support de requête pour obtenir un contenu partiel
- RFC 7234 - HTTP/1.1: Caching - La gestion du cache client et des caches des éléments intermédiaires
- RFC 7235 - HTTP/1.1: Authentication - La gestion de l'authentification HTTP
Structure des messages
HTTP est un protocole sans état conversationnel dans un environnement client/serveur. Le client émet une requête qui contient les informations suffisantes pour permettre au serveur de fournir une réponse.
Une requête HTTP débute par une ligne de requête (request line) terminée par un saut de ligne (CRLF). Cette ligne contient la méthode HTTP que le client souhaite exécuter, le chemin de la ressource cible sur laquelle la méthode doit s'appliquer et enfin la version du protocole HTTP utilisée (HTTP/1.1).
On trouve ensuite une liste d'en-têtes et une ligne vide qui marque la fin des en-têtes. Si la requête a un contenu (un corps de message), il est ensuite transmis.
Lorsque le serveur reçoit la requête, il reconstitue l'URI de la requête afin de déterminer quelle réponse il doit retourner au client. L'URI de la requête est
déterminée à partir de la ressource cible et de la valeur de l'en-tête Host
. Ainsi pour la requête suivante :
Le serveur infère que le client veut exécuter la méthode GET
sur l'URI :
Une réponse HTTP débute par une ligne de réponse (response line) terminée par un saut de ligne (CRLF). Celle-ci donne la version du protocole de réponse, le code de statut du traitement de la requête et enfin un message décrivant le code statut. On trouve ensuite une liste d'en-têtes et une ligne vide qui marque la fin des en-têtes. Si la réponse a un contenu (un corps de message), il est ensuite transmis.