Anatomie d'une requête HTTP
Anatomie d’une requête et d’une réponse HTTP.
Objectifs
À la fin de cette leçon, vous saurez :
- décrire la structure exacte d'une requête et d'une réponse HTTP ;
- distinguer méthode, URL, en-têtes et corps ;
- comprendre pourquoi HTTP est un protocole sans état.
Une requête, ligne par ligne
HTTP est du texte structuré sur une connexion TCP (chapitre 9). Requête typique :
GET /users/42 HTTP/1.1
Host: exemple.fr
User-Agent: Mozilla/5.0
Accept: application/json
Trois parties :
- Ligne de requête : méthode (
GET), chemin (/users/42), version du protocole. - En-têtes : métadonnées
Clé: Valeur, une par ligne. - Corps (facultatif) : les données envoyées, séparées des en-têtes par une ligne vide.
La réponse correspondante
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 34
{"id": 42, "name": "Paul"}
- Ligne de statut : version + code + libellé.
- En-têtes : nature du contenu, taille, cache…
- Corps : le document demandé.
URL : décomposer l'adresse
https://exemple.fr:443/users/42?tri=nom&page=2
└─┬──┘ └────┬────┘└┬─┘└───┬────┘└──────┬────────┘
protocole hôte port chemin query parameters
- Le chemin identifie la ressource ;
- les query parameters transportent des options de lecture ou de filtrage ;
- le port est implicite pour 80 (HTTP) et 443 (HTTPS).
Sans état
Chaque requête est indépendante : le serveur ne se souvient pas de la précédente. C'est ce qui permet de répartir la charge sur plusieurs serveurs. Mais alors comment « rester connecté » ? Par convention : le client renvoie à chaque requête un identifiant (le cookie de session) que le serveur reconnaît. L'état vit dans cette convention, pas dans le protocole.
Exercice
- Écrivez à la main la requête GET vers
/api/cours?page=2surmonsite.fr. - Dans
https://boutique.fr/produits?cat=clavier&promo=1, identifiez hôte, chemin et paramètres. - Pourquoi un serveur derrière trois machines différentes fonctionne-t-il grâce au caractère sans état ?
Résumé
- Requête = méthode + chemin + en-têtes (+ corps) ; réponse = statut + en-têtes + corps.
- Chemin = ressource ; query params = options ; corps = données.
- Sans état : la continuité repose sur les cookies, pas sur la mémoire du serveur.
Correction disponibleCherchez d’abord par vous-même.Voir la correction
Correction
Réponses détaillées
Question 1.
GET /api/cours?page=2 HTTP/1.1
Host: monsite.fr
Question 3. N'importe laquelle des trois machines peut traiter n'importe quelle requête : aucune mémoire partagée n'est nécessaire. La session elle-même peut être stockée ailleurs (base de données) pour rester accessible depuis les trois.