HTTP Status — Codes HTTP & leur signification
Référence rapide des codes de statut HTTP. Toutes les réponses canoniques des serveurs web.
1xx Informationnel
Le serveur a bien reçu la requête et demande une suite.
| Code | Nom | Description |
|---|---|---|
| 100 | Continue | Poursuivre la requête |
| 101 | Switching Protocols | Le serveur bascule vers un protocole différent |
| 102 | Processing (WebDAV) | Traitement en cours, pas de réponse finale |
| 103 | Early Hints | En-têtes provisoires avant la réponse complète |
2xx Succès
La requête a été accueillie, comprise et acceptée.
| Code | Nom | Description |
|---|---|---|
| 200 | OK | Requête réussie |
| 201 | Created | Ressource créée (POST) |
| 202 | Accepted | Requête acceptée mais pas encore traitée |
| 204 | No Content | Succès sans corps (DELETE, PUT) |
| 206 | Partial Content | Contenu partiel (réponse Range) |
Piège :
204 No Contentne retourne jamais de corps. Un client qui essaie de lireresponse.bodyreçoitnull.
3xx Redirection
Le client doit agir pour compléter la requête.
| Code | Nom | Description |
|---|---|---|
| 301 | Moved Permanently | Nouvelle URL définitive |
| 302 | Found | Redirection temporaire |
| 303 | See Other | Relire la ressource via GET |
| 304 | Not Modified | Cache valide, pas de renvoi du corps |
| 307 | Temporary Redirect | Redirection temporaire, méthode conservée |
| 308 | Permanent Redirect | Redirection permanente, méthode conservée |
Piège :
301et302peuvent changer la méthode POST en GET dans certains clients (navigateurs classiques). Pour conserver la méthode, utiliser307ou308.Piège :
304 Not Modifiedne s’applique qu’aux requêtesGET/HEADavec des en-têtesIf-None-MatchouIf-Modified-Since.
4xx Erreur Client
La requête est incorrecte ou ne peut être satisfaite.
| Code | Nom | Description |
|---|---|---|
| 400 | Bad Request | Requête malformée |
| 401 | Unauthorized | Authentification requise |
| 403 | Forbidden | Accès interdit (authentifié, pas autorisé) |
| 404 | Not Found | Ressource introuvable |
| 405 | Method Not Allowed | Méthode HTTP non supportée sur cette ressource |
| 409 | Conflict | Conflit avec l’état actuel de la ressource |
| 410 | Gone | Ressource définitivement supprimée |
| 413 | Payload Too Large | Corps de requête trop volumineux |
| 415 | Unsupported Media Type | Type de contenu non supporté |
| 422 | Unprocessable Entity | Requête correcte mais invalide (ex. validation échouée) |
| 429 | Too Many Requests | Trop de requêtes dans un laps de temps |
Piège : ne jamais renvoyer
404pour une ressource inexistante quand on veut cacher qu’elle a été supprimée — utiliser403ou404de manière cohérente.401vs403:401= “qui es-tu ?”,403= “tu es bien identifié mais ce n’est pas ton dossier”.
5xx Erreur Serveur
Le serveur a échoué à traiter une requête valide.
| Code | Nom | Description |
|---|---|---|
| 500 | Internal Server Error | Erreur générique |
| 501 | Not Implemented | Fonctionnalité non implémentée |
| 502 | Bad Gateway | Réponse invalide d’un serveur intermédiaire |
| 503 | Service Unavailable | Serveur en maintenance ou surchargé |
| 504 | Gateway Timeout | Délai d’un serveur intermédiaire dépassé |
Piège :
503 Service Unavailableest la réponse appropriée pour une mise à jour planifiée — les crawlers et clients respectueux la réessaient aprèsRetry-After.502vs504:502= l’upstream a renvoyé du charabia,504= l’upstream n’a jamais répondu.
En-têtes associés courants
| En-tête | Usage |
|---|---|
Retry-After | Délai avant nouvelle tentative (429, 503) |
Location | URL de redirection (3xx) |
ETag | Identifiant de version pour la mise en cache |
If-None-Match | Vérification cache côté client (304) |
Content-Range | Plage de bytes renvoyée (206) |
Content-Type | Format du corps de réponse |
X-Request-Id | Identifiant de corrélation pour le débogage |
Consulté chaque fois qu’on hésite entre 301/302/307, 401/403, ou
502/503/504 — ces différences ne sont pas intuitives et se confondent.