Le protocole HTTP
Cheatsheet HTTP — requête, réponse, méthodes, codes de statut, en-têtes, HTTPS et versions.
HTTP (HyperText Transfer Protocol) est le protocole de communication client ↔ serveur du Web. Cette fiche récapitule l'essentiel : structure d'une requête et d'une réponse, méthodes, codes de statut, en-têtes, et l'évolution du protocole.
En bref
- Protocole de communication client ↔ serveur.
- Né au CERN en 1989 (Tim Berners-Lee).
- Utilisé pour le Web (HTML, images, vidéos), les APIs (JSON, XML…) et les applications mobiles.
- Évolutions : HTTP/0.9 → 1.0 → 1.1 → 2 → 3.
- HTTPS = HTTP + chiffrement (TLS) — la norme aujourd'hui.
À savoir
HTTP est sans état (stateless) : chaque requête est indépendante, le serveur ne garde aucune mémoire d'une requête à l'autre.
Anatomie d'une requête
Une requête HTTP se compose de trois parties :
- Ligne de requête — la méthode, l'URL (cible) et la version du protocole.
- En-têtes (headers) — des métadonnées (navigateur, formats acceptés, authentification…).
- Corps (body, optionnel) — les données envoyées (formulaire, JSON, fichier…).
POST /api/login HTTP/1.1 # Ligne de requête : méthode · URL · version
Host: example.com # ┐
Content-Type: application/json # ┤ En-têtes (métadonnées)
Accept: application/json # ┘
# ← ligne vide : sépare en-têtes et corps
{ "email": "alice@example.com" } # Corps (body) : données envoyéesAttention
Les en-têtes et le corps sont toujours séparés par une ligne vide (saut de ligne).
Anatomie d'une réponse
Symétrique de la requête :
- Ligne de statut — la version, le code de statut et le message.
- En-têtes (headers) — infos du serveur (format, taille, cache, cookies…).
- Corps (body, optionnel) — le contenu (HTML, JSON, image…).
HTTP/1.1 200 OK # Ligne de statut : version · code · message
Content-Type: text/html # ┐
Content-Length: 1024 # ┤ En-têtes (métadonnées)
Cache-Control: no-cache # ┘
# ← ligne vide : sépare en-têtes et corps
<!DOCTYPE html> # Corps (body) : contenu de la réponse
<html>...</html>Méthodes
La méthode indique l'action souhaitée sur une ressource.
| Méthode | Rôle |
|---|---|
GET | Lire une ressource, sans la modifier |
POST | Créer une nouvelle ressource (envoi de données) |
PUT | Remplacer une ressource existante |
DELETE | Supprimer une ressource |
Il en existe d'autres : PATCH (modification partielle), HEAD, OPTIONS, etc.
Codes de statut
Le serveur répond toujours avec un code (3 chiffres) qui indique le résultat de la requête, regroupé en catégories :
| Catégorie | Sens | Exemples |
|---|---|---|
1xx | Information | 100 Continue |
2xx | Succès | 200 OK, 201 Created |
3xx | Redirection | 301 Moved Permanently, 302 Found |
4xx | Erreur client | 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found |
5xx | Erreur serveur | 500 Internal Server Error, 503 Service Unavailable |
À savoir
Une liste complète et bien expliquée est disponible sur Wikipedia.
En-têtes courants
Les headers sont des métadonnées échangées entre client et serveur.
Côté requête :
| En-tête | Rôle |
|---|---|
Host | Serveur cible |
User-Agent | Type de client (navigateur, app…) |
Accept | Formats acceptés (HTML, JSON…) |
Authorization | Infos d'authentification |
Content-Type | Format des données envoyées |
Côté réponse :
| En-tête | Rôle |
|---|---|
Content-Type | Format du contenu renvoyé |
Content-Length | Taille en octets |
Set-Cookie | Gestion de session côté client |
Cache-Control | Directives de mise en cache |
Location | Redirection |
Caractéristiques
- Sans état (stateless) — chaque requête est indépendante.
- Extensible — on peut ajouter de nouveaux en-têtes facilement.
- Lisible par les humains et les machines — format texte clair et universel.
Sécurité : HTTPS
HTTPS = HTTP + TLS (Transport Layer Security). Objectifs :
- Chiffrement — protège les données échangées (ex. mots de passe).
- Intégrité — garantit que les données ne sont pas modifiées en transit.
- Authentification — vérifie l'identité du serveur via un certificat.
Les certificats SSL/TLS sont délivrés par une autorité de certification (CA) ; le navigateur affiche un avertissement si le certificat est invalide ou absent. Aujourd'hui, HTTPS est la norme (HTTP seul est rare et déconseillé).
Historique des versions
| Version | Année | Apports |
|---|---|---|
| HTTP/0.9 | 1991 | Très simple : uniquement GET, pas d'en-têtes, juste du HTML brut |
| HTTP/1.0 | 1996 | En-têtes, support de plusieurs formats, une connexion par requête (inefficace) |
| HTTP/1.1 | 1997 | Connexions persistantes (keep-alive), cache avancé, OPTIONS/PUT/DELETE… |
| HTTP/2 | 2015 | Multiplexage (requêtes simultanées sur une connexion), compression des en-têtes (HPACK) |
| HTTP/3 | 2022 | Basé sur QUIC (UDP), latence réduite, résilient aux pertes réseau (idéal mobile) |