Adrien Gras
Docs & cheatsheets

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 :

  1. Ligne de requête — la méthode, l'URL (cible) et la version du protocole.
  2. En-têtes (headers) — des métadonnées (navigateur, formats acceptés, authentification…).
  3. 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ées

Attention

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 :

  1. Ligne de statut — la version, le code de statut et le message.
  2. En-têtes (headers) — infos du serveur (format, taille, cache, cookies…).
  3. 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éthodeRôle
GETLire une ressource, sans la modifier
POSTCréer une nouvelle ressource (envoi de données)
PUTRemplacer une ressource existante
DELETESupprimer 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égorieSensExemples
1xxInformation100 Continue
2xxSuccès200 OK, 201 Created
3xxRedirection301 Moved Permanently, 302 Found
4xxErreur client400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found
5xxErreur serveur500 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êteRôle
HostServeur cible
User-AgentType de client (navigateur, app…)
AcceptFormats acceptés (HTML, JSON…)
AuthorizationInfos d'authentification
Content-TypeFormat des données envoyées

Côté réponse :

En-têteRôle
Content-TypeFormat du contenu renvoyé
Content-LengthTaille en octets
Set-CookieGestion de session côté client
Cache-ControlDirectives de mise en cache
LocationRedirection

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

VersionAnnéeApports
HTTP/0.91991Très simple : uniquement GET, pas d'en-têtes, juste du HTML brut
HTTP/1.01996En-têtes, support de plusieurs formats, une connexion par requête (inefficace)
HTTP/1.11997Connexions persistantes (keep-alive), cache avancé, OPTIONS/PUT/DELETE
HTTP/22015Multiplexage (requêtes simultanées sur une connexion), compression des en-têtes (HPACK)
HTTP/32022Basé sur QUIC (UDP), latence réduite, résilient aux pertes réseau (idéal mobile)

Sur cette page