
HTTP — tous les codes de statut
De 100 à 511 : tous les codes enregistrés, plus les codes non standard courants. Un emoji, une explication et une piste de résolution pour chaque statut HTTP.
Aucun code ne correspond à votre recherche.
Un code HTTP raconte ce qui s’est passé entre le client et le serveur. Seules les familles 4xx et 5xx désignent des erreurs : les autres indiquent une étape, un succès ou une redirection.
Cette fiche couvre les 64 entrées individuelles du registre IANA, y compris les codes réservés, historiques et temporaires, vérifiées le 11 septembre 2026, ainsi que 15 codes non standard courants. Les extensions privées ne disposent pas d’un registre exhaustif : leur sens dépend du logiciel qui les produit. Chaque carte renvoie à sa référence.
Les réflexes qui font gagner du temps
| Situation | Le bon réflexe |
|---|---|
| 🔑 401 ou ⛔ 403 ? | 401 : vérifier l’authentification. 403 : vérifier l’autorisation et la politique d’accès. |
| 🥴 400 ou 📝 422 ? | 400 : requête invalide, notamment sa syntaxe. 422 : contenu compris, mais instructions impossibles à traiter. |
| ⚔️ 409 ou 🧷 412 ? | 409 : conflit avec l’état actuel. 412 : précondition HTTP explicitement échouée. |
| 🌉 502 ou ⏱️ 504 ? | Réponse amont invalide ou réponse amont trop tardive. Examiner le service derrière la passerelle. |
| 📦 301/302 ou 🔗 307/308 ? | 307 et 308 préservent méthode et corps. 301 et 302 peuvent transformer un POST en GET. |
| 🚦 429 ou 🛠️ 503 ? | Limitation de requêtes ou indisponibilité du service. Respecter Retry-After lorsqu’il est présent. |
🩺 Diagnostiquer une réponse HTTP en 60 secondes
- Dans les outils du navigateur, ouvrir Réseau / Network et sélectionner la requête réelle, y compris la prérequête OPTIONS si elle existe.
- Relever méthode, URL, statut, en-têtes et corps. Un statut seul n’explique pas toute la cause.
- Repérer qui répond : application, reverse proxy, CDN ou portail réseau. Garder l’identifiant de requête pour les journaux.
- Reproduire sans suivre automatiquement les redirections :
curl -i https://example.com/
Dans Windows PowerShell, utiliser curl.exe -i https://example.com/ pour éviter l’ancien alias. curl -I envoie une requête HEAD, qui peut être traitée différemment d’un GET. Voir aussi la cheatsheet curl.
- Avant de réessayer une écriture, vérifier si elle a déjà eu un effet. Un timeout ne prouve pas que l’opération a été annulée. Utiliser l’idempotence prévue par l’API ; éviter les répétitions automatiques d’un paiement ou d’une création.
🧠 Pièges fréquents : fetch, CORS, cache et statuts inconnus
fetch()ne rejette pas sa promesse simplement parce que le serveur répond 404 ou 500. Examinerresponse.statusetresponse.ok, qui vaut vrai pour 200–299.- 0 n’est pas un statut HTTP. Il peut apparaître dans une réponse opaque de Fetch ou certains outils lors d’une erreur réseau. Un blocage CORS, un échec DNS ou TLS n’implique pas qu’un serveur ait envoyé un code 0.
mode: "no-cors"ne rend pas une réponse lisible. - Une réponse HEAD, 1xx, 204, 205 ou 304 ne fournit pas de contenu à parser comme du JSON. Un 202 ne garantit pas la réussite finale ; un 207 peut contenir des échecs individuels.
- Les codes s’appliquent à HTTP/1.1, HTTP/2 et HTTP/3, avec des différences de mécanismes comme 101. Le libellé anglais est une aide humaine : raisonner sur le nombre, pas sur le texte de la réponse.
- Les codes 100–599 forment l’espace valide. Un code inconnu valide est traité selon sa famille (par exemple un 471 inconnu comme un 400), sans mise en cache de cette réponse inconnue. 600 et au-delà ne sont pas des statuts HTTP valides.
- Un nombre 1xxx Cloudflare affiché dans une page d’erreur n’est pas le statut HTTP : lire aussi le véritable statut dans l’onglet Réseau.
🗂️ Et les numéros absents ? Toutes les plages non attribuées
Il n’existe pas un statut standard pour chaque entier. Le registre IANA consulté laisse les plages suivantes non attribuées ; certaines sont utilisées localement par des fournisseurs, sans devenir des standards.
| Famille | Plages non attribuées dans le registre |
|---|---|
| 1xx | 105–199 |
| 2xx | 209–225, 227–299 |
| 3xx | 309–399 |
| 4xx | 419–420, 427, 430, 432–450, 452–499 |
| 5xx | 509, 512–599 |
306 et 418 sont réservés, et non simplement disponibles. 402 est réservé pour un usage futur. 104 est temporaire jusqu’au 13 novembre 2026, sous réserve d’une nouvelle évolution du registre. 305 est déprécié et 510 est obsolète. Vérifier l’état actuel auprès de l’IANA.
💡 1xx · Information
5 codesContinue
Enregistré IANALe serveur autorise la poursuite de la requête après ses en-têtes.
Avec Expect: 100-continue, envoyer le corps après cette réponse provisoire ; attendre ensuite le statut final.
Switching Protocols
Enregistré IANALe serveur accepte de changer de protocole, notamment pour un WebSocket en HTTP/1.1.
Vérifier Upgrade et Connection. Ce mécanisme ne s’utilise pas de la même façon en HTTP/2 ou HTTP/3.
Processing
WebDAV · historiqueAncienne réponse provisoire WebDAV : le traitement continue sans résultat final.
Ne pas confondre avec 202, qui est une réponse finale. Usage historique défini par la RFC 2518.
Early Hints
Enregistré IANADes indications arrivent avant la réponse finale pour préparer le chargement de ressources.
Exemple : Link: </style.css>; rel=preload; as=style. Attendre le statut final avant de conclure au succès.
Upload Resumption Supported
Temporaire · jusqu’au 13/11/2026Le serveur indique sa prise en charge de la reprise d’un téléversement selon une spécification en cours.
Enregistrement temporaire, expiration prévue le 13 novembre 2026. Vérifier le registre et la version du protocole avant usage.
✅ 2xx · Succès
10 codesOK
Enregistré IANALa requête a réussi ; le sens du contenu dépend de la méthode HTTP.
Exemple : GET /api/articles renvoie la liste. Vérifier aussi le schéma du corps avant de l’utiliser.
Created
Enregistré IANALa requête a créé une ou plusieurs ressources.
Exemple : POST /api/articles. Fournir Location: /api/articles/42 pour identifier la ressource créée lorsque pertinent.
Accepted
Enregistré IANALa demande est acceptée, mais le traitement n’est pas terminé et peut encore échouer.
Exemple : export en arrière-plan. Fournir une URL de suivi ; ne pas annoncer que le fichier est déjà prêt.
Non-Authoritative Information
Enregistré IANAUn intermédiaire a modifié le contenu d’une réponse 200 fournie par le serveur d’origine.
Examiner le proxy et les transformations ; tenir compte de leur effet sur les validations de cache.
No Content
Enregistré IANAL’opération a réussi sans contenu de réponse.
Exemple : suppression réussie. Ne pas appeler response.json() sur ce corps vide.
Reset Content
Enregistré IANAL’opération a réussi et le client devrait réinitialiser la vue de saisie.
Exemple : vider un formulaire après son envoi. La réponse ne contient pas de contenu.
Partial Content
Enregistré IANALe serveur fournit la ou les plages demandées d’une représentation.
Exemple : téléchargement reprenant à l’octet 1000. Vérifier Range, Content-Range et les validateurs.
Multi-Status
WebDAVUne opération WebDAV fournit plusieurs résultats dans un même corps.
Lire chaque statut dans le document multistatus : un 207 n’implique pas que toutes les opérations ont réussi.
Already Reported
WebDAVDans une réponse WebDAV, les membres d’une collection ont déjà été énumérés.
Traiter les éléments déjà décrits sans les compter deux fois ; ce code apparaît dans le corps multistatus.
IM Used
Enregistré IANALe serveur a appliqué une manipulation d’instance pour répondre à un GET, par exemple un transfert différentiel.
Vérifier la négociation A-IM et l’en-tête IM avant de reconstruire la représentation.
🧭 3xx · Redirection
9 codesMultiple Choices
Enregistré IANAPlusieurs représentations ou destinations peuvent répondre à la demande.
Présenter les choix au client et éventuellement indiquer une préférence dans Location.
Moved Permanently
Enregistré IANALa ressource dispose d’une nouvelle URL permanente.
Mettre à jour les liens. Certains clients transforment POST en GET ; utiliser 308 si la méthode doit être conservée.
Found
Enregistré IANALa ressource est temporairement accessible à une autre URL.
Vérifier Location. Certains clients transforment POST en GET ; utiliser 307 pour conserver la méthode et le corps.
See Other
Enregistré IANALe résultat se consulte à une autre URL, généralement par GET.
Après un formulaire POST, rediriger vers une page de confirmation avec Location ; une requête HEAD peut rester HEAD.
Not Modified
Enregistré IANAUne lecture conditionnelle confirme que la représentation en cache reste utilisable.
Réutiliser le corps en cache et actualiser ses métadonnées. Le 304 ne contient pas de contenu de réponse.
Use Proxy
DépréciéAncien mécanisme demandant l’usage d’un proxy ; il est déprécié.
Ne pas l’émettre dans une nouvelle API. Configurer les proxys par les mécanismes du client.
(Unused)
Réservé · inutiliséCode inutilisé et réservé ; il n’a pas de comportement actuel à implémenter.
Ne pas l’attribuer à une nouvelle signification dans une API publique.
Temporary Redirect
Enregistré IANARedirection temporaire qui conserve la méthode et le corps de la requête.
Un POST reste un POST. Vérifier la destination Location avant d’y renvoyer des données.
Permanent Redirect
Enregistré IANARedirection permanente qui conserve la méthode et le corps.
Choisir ce code pour déplacer durablement un endpoint dont les appels POST doivent être conservés.
🔑 4xx · Erreurs client
29 codesBad Request
Enregistré IANALa requête ne peut pas être traitée à cause d’un problème côté client : syntaxe, cadrage ou routage trompeur.
Exemple : JSON mal formé. Vérifier URL, corps et en-têtes ; retourner un message précis sur l’entrée invalide.
Unauthorized
Enregistré IANAL’authentification est absente ou invalide : le client n’a pas présenté d’identifiants acceptables.
Vérifier Authorization, expiration du jeton et cookies. Le serveur doit fournir WWW-Authenticate avec un défi applicable.
Payment Required
Réservé · usage futurCode réservé à un usage futur ; il n’existe pas de procédure de paiement HTTP universelle associée.
Si une API l’utilise pour un paiement ou un quota, lire son contrat spécifique au fournisseur.
Forbidden
Enregistré IANALe serveur comprend la demande mais refuse de l’exécuter ; des droits insuffisants sont une cause possible.
Vérifier rôle, permissions et politique d’accès. Répéter les mêmes identifiants ne résout généralement rien.
Not Found
Enregistré IANALa ressource est introuvable, ou le serveur ne souhaite pas révéler son existence.
Vérifier chemin, identifiant, route et environnement. Ce code ne dit pas si l’absence est permanente.
Method Not Allowed
Enregistré IANALa méthode est connue mais interdite pour cette ressource.
Exemple : POST sur une route en lecture seule. Le serveur doit envoyer Allow avec les méthodes acceptées.
Not Acceptable
Enregistré IANAAucune représentation acceptable selon la négociation de contenu n’est disponible et le serveur refuse un choix par défaut.
Vérifier Accept et Accept-Language ; demander un format réellement proposé par l’API.
Proxy Authentication Required
Enregistré IANALe proxy exige une authentification, distincte de celle du serveur final.
Examiner Proxy-Authenticate et configurer Proxy-Authorization pour le proxy concerné.
Request Timeout
Enregistré IANALe serveur n’a pas reçu une requête complète dans le délai imparti.
Vérifier réseau et vitesse d’envoi. Une nouvelle tentative peut utiliser une nouvelle connexion, selon la sûreté de l’opération.
Conflict
Enregistré IANALa demande entre en conflit avec l’état actuel de la ressource.
Exemple : nom déjà pris ou version incompatible. Récupérer l’état actuel et résoudre le conflit avant de renvoyer.
Gone
Enregistré IANALa ressource n’est plus disponible et cette absence est probablement permanente.
Retirer les liens obsolètes ou proposer un remplacement. Préférer 404 si la permanence n’est pas connue.
Length Required
Enregistré IANALe serveur exige une longueur de contenu définie pour cette requête.
Fournir un Content-Length correct lorsque possible ; ne pas inventer une taille qui ne correspond pas au corps.
Precondition Failed
Enregistré IANAUne condition transmise dans les en-têtes n’est pas satisfaite.
Exemple : If-Match utilise un ancien ETag. Relire la ressource avant de retenter la modification.
Content Too Large
Enregistré IANALe corps de la requête dépasse ce que le serveur accepte ; ancien nom : Payload Too Large.
Réduire le fichier ou vérifier les limites du proxy et de l’application. Une limite temporaire peut être accompagnée de Retry-After.
URI Too Long
Enregistré IANAL’URI demandée dépasse la longueur acceptée.
Réduire les paramètres ; déplacer une recherche volumineuse vers un corps POST si l’API le permet.
Unsupported Media Type
Enregistré IANALe format du contenu envoyé n’est pas pris en charge pour cette méthode et cette ressource.
Vérifier Content-Type, Content-Encoding et le corps réel. Exemple : envoyer du JSON à une route qui attend du multipart.
Range Not Satisfiable
Enregistré IANALes plages demandées ne peuvent pas être servies.
Vérifier la taille actuelle du fichier et Range. Pour une plage d’octets non satisfaisable, examiner Content-Range: bytes */taille.
Expectation Failed
Enregistré IANALe serveur ou un intermédiaire ne peut pas satisfaire l’attente de l’en-tête Expect.
Si Expect: 100-continue est en cause, envisager une nouvelle requête sans cette attente.
(Unused) — I’m a teapot
Réservé · clin d’œil historiqueRéservé et inutilisé dans HTTP actuel ; célèbre clin d’œil « je suis une théière » issu du protocole humoristique HTCPCP.
Ne pas utiliser comme erreur métier générique. La référence historique est la RFC 2324 ; le registre actuel indique Unused.
Misdirected Request
Enregistré IANALa requête arrive sur un serveur qui ne peut pas fournir une réponse faisant autorité pour sa cible.
Vérifier Host, SNI et le routage des connexions mutualisées ; une autre connexion peut être nécessaire.
Unprocessable Content
Enregistré IANALe type et la syntaxe du contenu sont compris, mais ses instructions ne peuvent pas être exécutées ; ancien nom : Unprocessable Entity.
Exemple : date de fin antérieure au début. Corriger les champs signalés par la validation métier.
Locked
WebDAVUne ressource WebDAV est verrouillée.
Vérifier le propriétaire du verrou et le jeton transmis ; libérer le verrou ou attendre selon le protocole.
Failed Dependency
WebDAVUne opération WebDAV échoue parce qu’une action dont elle dépend a échoué.
Chercher l’échec initial dans la réponse multistatus et corriger d’abord cette dépendance.
Too Early
Enregistré IANALe serveur refuse de traiter une demande qui pourrait être rejouée, notamment en données précoces TLS.
Réessayer après la négociation TLS, sans early data. Ce n’est pas un code de limitation de débit.
Upgrade Required
Enregistré IANALe serveur exige un autre protocole pour exécuter la requête.
Lire l’en-tête Upgrade requis dans la réponse et utiliser le protocole proposé si le client le prend en charge.
Precondition Required
Enregistré IANALe serveur exige une requête conditionnelle pour éviter d’écraser une modification concurrente.
Récupérer l’ETag puis envoyer If-Match. Distinguer condition absente (428) et condition échouée (412).
Too Many Requests
Enregistré IANATrop de requêtes ont été envoyées dans le temps autorisé.
Respecter Retry-After s’il est présent ; espacer les tentatives avec attente progressive et aléatoire, puis vérifier les quotas.
Request Header Fields Too Large
Enregistré IANAUn en-tête ou l’ensemble des en-têtes de requête est trop volumineux.
Réduire cookies et jetons inutiles ; vérifier les limites du serveur et du proxy.
Unavailable For Legal Reasons
Enregistré IANAL’accès est refusé en raison d’une contrainte légale.
Lire les explications et, s’il est fourni, le lien rel=blocked-by identifiant l’entité qui applique le blocage.
🛠️ 5xx · Erreurs serveur
11 codesInternal Server Error
Enregistré IANAUne erreur inattendue empêche le serveur de répondre correctement.
Corréler l’heure et l’identifiant de requête avec les journaux ; vérifier exception, configuration et dépendances.
Not Implemented
Enregistré IANALe serveur ne prend pas en charge la fonctionnalité nécessaire, par exemple une méthode inconnue.
Vérifier les capacités de l’API. Une méthode connue mais interdite sur une route relève plutôt de 405.
Bad Gateway
Enregistré IANAUn serveur agissant comme passerelle reçoit une réponse invalide de son serveur amont.
Vérifier l’application derrière le proxy, ses journaux et la validité de sa réponse HTTP.
Service Unavailable
Enregistré IANALe service ne peut pas répondre pour le moment, souvent en maintenance ou en surcharge.
Vérifier capacité et état du service ; respecter Retry-After s’il est présent et éviter une boucle de tentatives immédiates.
Gateway Timeout
Enregistré IANALa passerelle n’a pas reçu à temps la réponse de son serveur amont.
Examiner latence applicative, requêtes SQL et délais entre services avant d’augmenter les timeouts.
HTTP Version Not Supported
Enregistré IANALe serveur ne prend pas en charge la version majeure HTTP utilisée.
Configurer une version HTTP compatible dans le client ou le proxy.
Variant Also Negotiates
Enregistré IANALa négociation de contenu du serveur est mal configurée : une variante sélectionnée négocie elle-même.
Corriger la configuration des variantes pour que la sélection aboutisse à une ressource finale.
Insufficient Storage
WebDAVLe serveur ne peut pas stocker la représentation nécessaire à l’opération, notamment en WebDAV.
Vérifier espace disque et quotas ; une répétition immédiate sans changement ne libère pas de stockage.
Loop Detected
WebDAVUne boucle a été détectée pendant une opération WebDAV.
Examiner les liaisons entre collections. Ce code ne signifie pas simplement trop de redirections dans un navigateur.
Not Extended
ObsolèteAncien code du cadre d’extensions HTTP de la RFC 2774 ; son enregistrement est désormais obsolète.
Ne pas l’adopter pour une nouvelle API. Vérifier la documentation d’un système historique qui le renvoie.
Network Authentication Required
Enregistré IANAL’accès au réseau exige une authentification, typiquement via un portail captif.
Ouvrir le portail du réseau. Ne pas envoyer les identifiants de l’API au portail ; il ne s’agit pas d’un 401 de l’origine.
🧰 Codes non standard
15 codesExtensions propres aux fournisseurs. Les codes internes ou de journal Nginx ne correspondent pas nécessairement à une réponse reçue par le client.
Page Expired
Laravel · non standardLaravel convertit notamment une erreur de jeton CSRF en 419 ; ce code n’est pas attribué par l’IANA.
Rafraîchir la session et le jeton CSRF, puis vérifier cookies et domaine de session.
No Response
Nginx · interneNginx peut fermer volontairement la connexion sans envoyer de réponse HTTP.
Examiner les règles return 444 et les journaux ; le client ne reçoit pas une ligne de statut 444.
Request Header Too Large
Nginx · interneCode interne Nginx associé à des en-têtes de requête trop grands.
Réduire les en-têtes et vérifier les buffers ; le statut exposé au client peut être différent.
SSL Certificate Error
Nginx · interneCode interne Nginx utilisé lors d’une erreur de validation du certificat client.
Vérifier le certificat client et sa chaîne de confiance ; ne pas le confondre avec le certificat du serveur.
SSL Certificate Required
Nginx · interneCode interne Nginx : un certificat client obligatoire n’a pas été fourni.
Configurer le certificat client pour l’authentification TLS mutuelle.
HTTP Request Sent to HTTPS Port
Nginx · interneCode interne Nginx : une requête HTTP en clair atteint un port HTTPS.
Corriger le schéma de l’URL ou le protocole entre proxy et origine.
Client Closed Request
Nginx · journalNginx journalise la fermeture de la connexion par le client avant la réponse.
Comparer annulations du client et délais des proxys ; ce statut de journal n’est pas envoyé au client déjà parti.
Web Server Returned an Unknown Error
Cloudflare · non standardCloudflare reçoit de l’origine une réponse vide, inhabituelle ou inexploitable.
Inspecter les journaux de l’origine et conserver le Ray ID pour corréler l’incident.
Web Server Is Down
Cloudflare · non standardL’origine refuse la connexion de Cloudflare.
Vérifier que le serveur écoute et que le pare-feu accepte les connexions Cloudflare.
Connection Timed Out
Cloudflare · non standardLa communication entre Cloudflare et l’origine expire à l’établissement ou à l’acquittement de la connexion.
Vérifier disponibilité réseau, charge et pare-feu de l’origine.
Origin Is Unreachable
Cloudflare · non standardCloudflare ne peut pas atteindre le serveur d’origine.
Vérifier l’adresse IP d’origine dans le DNS et le routage réseau.
A Timeout Occurred
Cloudflare · non standardLa connexion à l’origine est établie, mais une lecture ou une écriture dépasse le délai de Cloudflare.
Optimiser les traitements longs ou les déplacer en tâche asynchrone avec suivi.
SSL Handshake Failed
Cloudflare · non standardLa négociation TLS entre Cloudflare et l’origine échoue.
Examiner protocoles, suites cryptographiques, SNI et journaux TLS du serveur.
Invalid SSL Certificate
Cloudflare · non standardCloudflare ne valide pas le certificat TLS de l’origine dans le contexte concerné, notamment en mode strict.
Corriger expiration, nom d’hôte et chaîne du certificat.
Origin Error
Cloudflare · non standardCloudflare renvoie un 530 accompagné d’un code d’erreur 1xxx dans le corps.
Lire ce code 1xxx pour trouver la cause précise, par exemple un problème DNS ; 530 seul ne suffit pas.
