HTTP

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
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

  • HTTPS — HTTP chiffré via TLS
  • TCP · TCP/IP — couches sous-jacentes