Skip to Content
CheatsheetsHTTP Status — Codes HTTP & leur signification

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.

CodeNomDescription
100ContinuePoursuivre la requête
101Switching ProtocolsLe serveur bascule vers un protocole différent
102Processing (WebDAV)Traitement en cours, pas de réponse finale
103Early HintsEn-têtes provisoires avant la réponse complète

2xx Succès

La requête a été accueillie, comprise et acceptée.

CodeNomDescription
200OKRequête réussie
201CreatedRessource créée (POST)
202AcceptedRequête acceptée mais pas encore traitée
204No ContentSuccès sans corps (DELETE, PUT)
206Partial ContentContenu partiel (réponse Range)

Piège : 204 No Content ne retourne jamais de corps. Un client qui essaie de lire response.body reçoit null.

3xx Redirection

Le client doit agir pour compléter la requête.

CodeNomDescription
301Moved PermanentlyNouvelle URL définitive
302FoundRedirection temporaire
303See OtherRelire la ressource via GET
304Not ModifiedCache valide, pas de renvoi du corps
307Temporary RedirectRedirection temporaire, méthode conservée
308Permanent RedirectRedirection permanente, méthode conservée

Piège : 301 et 302 peuvent changer la méthode POST en GET dans certains clients (navigateurs classiques). Pour conserver la méthode, utiliser 307 ou 308.

Piège : 304 Not Modified ne s’applique qu’aux requêtes GET/HEAD avec des en-têtes If-None-Match ou If-Modified-Since.

4xx Erreur Client

La requête est incorrecte ou ne peut être satisfaite.

CodeNomDescription
400Bad RequestRequête malformée
401UnauthorizedAuthentification requise
403ForbiddenAccès interdit (authentifié, pas autorisé)
404Not FoundRessource introuvable
405Method Not AllowedMéthode HTTP non supportée sur cette ressource
409ConflictConflit avec l’état actuel de la ressource
410GoneRessource définitivement supprimée
413Payload Too LargeCorps de requête trop volumineux
415Unsupported Media TypeType de contenu non supporté
422Unprocessable EntityRequête correcte mais invalide (ex. validation échouée)
429Too Many RequestsTrop de requêtes dans un laps de temps

Piège : ne jamais renvoyer 404 pour une ressource inexistante quand on veut cacher qu’elle a été supprimée — utiliser 403 ou 404 de manière cohérente. 401 vs 403 : 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.

CodeNomDescription
500Internal Server ErrorErreur générique
501Not ImplementedFonctionnalité non implémentée
502Bad GatewayRéponse invalide d’un serveur intermédiaire
503Service UnavailableServeur en maintenance ou surchargé
504Gateway TimeoutDélai d’un serveur intermédiaire dépassé

Piège : 503 Service Unavailable est la réponse appropriée pour une mise à jour planifiée — les crawlers et clients respectueux la réessaient après Retry-After. 502 vs 504 : 502 = l’upstream a renvoyé du charabia, 504 = l’upstream n’a jamais répondu.

En-têtes associés courants

En-têteUsage
Retry-AfterDélai avant nouvelle tentative (429, 503)
LocationURL de redirection (3xx)
ETagIdentifiant de version pour la mise en cache
If-None-MatchVérification cache côté client (304)
Content-RangePlage de bytes renvoyée (206)
Content-TypeFormat du corps de réponse
X-Request-IdIdentifiant 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.