Definition
HTTP (HyperText Transfer Protocol) est le protocole de communication fondamental du web. Il definit comment les messages sont formates et transmis entre un client (navigateur, application) et un serveur web.
Cree par Tim Berners-Lee en 1991, HTTP est un protocole sans etat (stateless) : chaque requete est independante, le serveur ne conserve aucune information entre les requetes.
Anatomie d'une requete HTTP
POST /api/users HTTP/2
Host: api.exemple.com
Authorization: Bearer eyJhbGciOiJIUzI1Ni...
Content-Type: application/json
Accept: application/json
{"nom": "Alice", "email": "alice@exemple.com"}
Composants
- Methode : GET, POST, PUT, PATCH, DELETE
- URL : le chemin de la ressource
- Headers : metadonnees (authentification, type de contenu, cache)
- Body : donnees envoyees (POST, PUT, PATCH)
Codes de statut HTTP
2xx — Succes
| Code |
Signification |
| 200 |
OK |
| 201 |
Created (ressource creee) |
| 204 |
No Content (succes, pas de body) |
3xx — Redirection
| Code |
Signification |
| 301 |
Moved Permanently (redirection definitive) |
| 302 |
Found (redirection temporaire) |
| 304 |
Not Modified (cache valide) |
4xx — Erreur client
| Code |
Signification |
| 400 |
Bad Request (requete mal formee) |
| 401 |
Unauthorized (non authentifie) |
| 403 |
Forbidden (pas les droits) |
| 404 |
Not Found (ressource inexistante) |
| 429 |
Too Many Requests (rate limiting) |
5xx — Erreur serveur
| Code |
Signification |
| 500 |
Internal Server Error |
| 502 |
Bad Gateway (proxy/load balancer) |
| 503 |
Service Unavailable (surcharge) |
| 504 |
Gateway Timeout |
Evolution du protocole
HTTP/1.1 (1997)
- Une requete par connexion (head-of-line blocking)
- Keep-alive pour reutiliser les connexions
- Chunked transfer encoding
HTTP/2 (2015)
- Multiplexage : plusieurs requetes sur une seule connexion
- Compression des headers (HPACK)
- Server Push : le serveur envoie des ressources avant qu'elles soient demandees
- Necessite HTTPS en pratique
HTTP/3 (2022)
- Base sur QUIC (UDP au lieu de TCP)
- Pas de head-of-line blocking
- Handshake plus rapide (0-RTT)
- Meilleur sur les reseaux instables (mobile)
Headers HTTP importants
| Header |
Role |
Exemple |
Content-Type |
Type de contenu |
application/json |
Authorization |
Authentification |
Bearer token123 |
Cache-Control |
Politique de cache |
max-age=3600 |
Accept |
Format accepte |
application/json |
CORS headers |
Cross-origin |
Access-Control-Allow-Origin |