| Fiche express
|
| Domaine |
Protocole applicatif du web
|
| Couche OSI |
7 (Application)
|
| Port |
80 (443 pour HTTPS)
|
| Voir aussi |
HTTPS · TCP · TCP/IP
|
HTTP (HyperText Transfer Protocol) est le protocole de transfert de documents du web,
au-dessus de TCP. Un client (navigateur, curl...) envoie une requête à un serveur, qui répond
par un code de statut et un corps de réponse (HTML, JSON, image...).
Méthodes principales
| Méthode |
Usage
|
GET |
Récupérer une ressource, sans effet de bord attendu
|
POST |
Envoyer des données (création, soumission de formulaire)
|
PUT |
Remplacer entièrement une ressource
|
PATCH |
Modifier partiellement une ressource
|
DELETE |
Supprimer une ressource
|
HEAD |
Comme GET mais sans corps de réponse (juste les en-têtes)
|
OPTIONS |
Méthodes autorisées sur une ressource (utilisé notamment par CORS)
|
Codes de statut
| Plage |
Signification
|
| 1xx |
Information (rarement vue directement)
|
| 2xx |
Succès (200 OK, 201 Created, 204 No Content)
|
| 3xx |
Redirection (301 permanente, 302/307 temporaire, 304 Not Modified — cache)
|
| 4xx |
Erreur côté client (400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests)
|
| 5xx |
Erreur côté serveur (500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable, 504 Gateway Timeout)
|
En-têtes courants
Host: exemple.fr # obligatoire depuis HTTP/1.1, permet l'hébergement virtuel (plusieurs sites/IP)
Content-Type: application/json
Content-Length: 348
Cache-Control: no-cache
Authorization: Bearer <token>
User-Agent: ...
X-Forwarded-For: <ip-client> # ajouté par un proxy/reverse proxy
Versions
- HTTP/1.1 — texte, une requête par connexion TCP sauf keep-alive ; encore majoritaire pour la compatibilité.
- HTTP/2 — binaire, multiplexage de plusieurs requêtes sur une seule connexion TCP (évite le head-of-line blocking applicatif), compression des en-têtes (HPACK).
- HTTP/3 — s'appuie sur QUIC (UDP) plutôt que TCP, pour éviter le head-of-line blocking au niveau transport.
Exemple avec curl
curl -i https://exemple.fr/api/status # -i : affiche les en-têtes de réponse
curl -X POST -H "Content-Type: application/json" -d '{"a":1}' https://exemple.fr/api
Voir aussi