Référence des codes HTTP
HTTP Status Reference
Explique chaque code de statut avec son sens dans la spécification, sa mise en cache et les erreurs qu’on commet avec lui.
Une référence consultable pour chaque code de statut HTTP — ce qu'il signifie, quel RFC le définit, si un cache peut le stocker par défaut, et avec quel en-tête il doit être envoyé. La recherche porte sur le code, le nom et le résumé, et accepte une requête en anglais, coréen, japonais, chinois simplifié et espagnol — pas en français.
Cherche dans le code, le nom, le résumé et les remarques — en anglais, coréen, japonais, chinois simplifié et espagnol.
404 Not Found
404Not Found
Aucune ressource à cette URL.
Erreur du client — C’est la requête qui est fautive. La réessayer telle quelle échouera de la même façon.
RFC 9110 §15.5.5Cacheable par défaut
oui
Cacheable par défaut : un fait qui surprend tout le monde la première fois qu’un CDN continue de servir un 404 pour une page qui existe désormais.
62 sur 62 codes
| Code | Nom | Signifie | Cacheable |
|---|---|---|---|
| 100 | Continue | Le client peut continuer et envoyer le corps de la requête. | non |
| 101 | Switching Protocols | Le serveur bascule vers le protocole demandé par le client. | non |
| 102 | Processing | WebDAV : la requête est en cours de traitement. | non |
| 103 | Early Hints | Des en-têtes préliminaires, pour que le client commence à précharger avant la vraie réponse. | non |
| 200 | OK | La requête a réussi. | oui |
| 201 | Created | Une nouvelle ressource a été créée. | non |
| 202 | Accepted | La requête a été acceptée mais n’a pas encore été exécutée. | non |
| 203 | Non-Authoritative Information | Un mandataire a modifié la réponse qu’il relaie. | oui |
| 204 | No Content | Réussite, et il n’y a délibérément pas de corps. | oui |
| 205 | Reset Content | Réussite ; le client devrait vider le formulaire qu’il a envoyé. | non |
| 206 | Partial Content | La plage d’octets demandée. | oui |
| 207 | Multi-Status | WebDAV : un corps XML avec un statut par sous-requête. | non |
| 208 | Already Reported | WebDAV : ce membre a déjà été énuméré. | non |
| 226 | IM Used | La réponse est le résultat de manipulations d’instance appliquées. | non |
| 300 | Multiple Choices | Plusieurs représentations existent ; choisissez-en une. | oui |
| 301 | Moved Permanently | La ressource a une nouvelle URL, définitivement. | oui |
| 302 | Found | Une redirection temporaire. | non |
| 303 | See Other | Allez chercher l’autre URL avec GET. | non |
| 304 | Not Modified | La copie en cache est encore bonne. | non |
| 305 | Use Proxy | Obsolète : le client devrait utiliser le mandataire indiqué. | non |
| 307 | Temporary Redirect | Une redirection temporaire qui conserve la méthode. | non |
| 308 | Permanent Redirect | Une redirection permanente qui conserve la méthode. | oui |
| 400 | Bad Request | La requête est mal formée et le serveur ne la traitera pas. | non |
| 401 | Unauthorized | Une authentification est requise, ou les identifiants fournis ont été refusés. | non |
| 402 | Payment Required | Réservé, et on ne lui a jamais donné de sens. | non |
| 403 | Forbidden | Le serveur a compris, et refuse. | non |
| 404 | Not Found | Aucune ressource à cette URL. | oui |
| 405 | Method Not Allowed | L’URL existe ; cette méthode ne s’y applique pas. | oui |
| 406 | Not Acceptable | Rien de ce que le serveur peut produire ne correspond à l’en-tête `Accept`. | non |
| 407 | Proxy Authentication Required | Le mandataire réclame des identifiants. | non |
| 408 | Request Timeout | Le client a mis trop de temps à envoyer la requête. | non |
| 409 | Conflict | La requête entre en conflit avec l’état actuel. | non |
| 410 | Gone | C’était ici et cela ne reviendra pas, délibérément. | oui |
| 411 | Length Required | Un en-tête `Content-Length` est obligatoire. | non |
| 412 | Precondition Failed | Une condition `If-Match` ou `If-Unmodified-Since` n’a pas été remplie. | non |
| 413 | Content Too Large | Le corps est plus gros que ce que le serveur accepte. | non |
| 414 | URI Too Long | L’URL est plus longue que ce que le serveur accepte. | oui |
| 415 | Unsupported Media Type | Le `Content-Type` du corps n’est pas de ceux que le serveur traite. | non |
| 416 | Range Not Satisfiable | La plage demandée se situe en dehors de la ressource. | non |
| 417 | Expectation Failed | L’en-tête `Expect` ne peut pas être satisfait. | non |
| 418 | I'm a teapot | Un poisson d’avril de 1998 qui n’est jamais reparti. | non |
| 421 | Misdirected Request | Ce serveur ne peut pas produire de réponse pour cette autorité. | non |
| 422 | Unprocessable Content | Bien formé, mais sémantiquement faux. | non |
| 423 | Locked | WebDAV : la ressource est verrouillée. | non |
| 424 | Failed Dependency | WebDAV : une requête précédente de la séquence a échoué. | non |
| 425 | Too Early | Le serveur refuse de risquer le rejeu d’une requête envoyée en données précoces. | non |
| 426 | Upgrade Required | Le client doit changer de protocole. | non |
| 428 | Precondition Required | Le serveur exige que la requête soit conditionnelle. | non |
| 429 | Too Many Requests | Débit limité. | non |
| 431 | Request Header Fields Too Large | Les en-têtes sont trop gros. | non |
| 451 | Unavailable For Legal Reasons | Bloqué à la suite d’une demande légale. | oui |
| 500 | Internal Server Error | Quelque chose s’est mal passé et le serveur n’a rien de plus précis à dire. | non |
| 501 | Not Implemented | Le serveur ne prend pas du tout en charge cette méthode. | oui |
| 502 | Bad Gateway | Un serveur en amont a envoyé quelque chose d’invalide. | non |
| 503 | Service Unavailable | Temporairement incapable de traiter la requête. | non |
| 504 | Gateway Timeout | Un serveur en amont n’a pas répondu à temps. | non |
| 505 | HTTP Version Not Supported | La version de HTTP indiquée dans la requête n’est pas prise en charge. | non |
| 506 | Variant Also Negotiates | Une erreur de configuration de la négociation de contenu. | non |
| 507 | Insufficient Storage | WebDAV : pas assez de place pour stocker la représentation. | non |
| 508 | Loop Detected | WebDAV : une boucle infinie pendant le traitement. | non |
| 510 | Not Extended | Des extensions supplémentaires sont nécessaires. | non |
| 511 | Network Authentication Required | Un portail captif vous demande de vous connecter. | non |
Ceux que l’on confond
- 401 veut dire « je ne sais pas qui vous êtes » : envoyez des identifiants et recommencez. 403 veut dire « je sais qui vous êtes et la réponse est non ». Si les identifiants étaient valides mais insuffisants, c’est 403.
- 400 concerne une requête que le serveur ne sait pas analyser. 422 concerne une requête qu’il a parfaitement analysée et qu’il désapprouve. Un client peut réessayer un 422 avec d’autres données ; un 400 signifie généralement que le client lui-même est cassé.
- Le premier axe est la permanence (301/308 permanents, 302/307 temporaires) et le second la conservation de la méthode (307/308 la gardent, 301/302 historiquement non). En cas de doute sur une API, utilisez 307 ou 308.
- Les deux viennent d’un mandataire et non de votre application. 502, c’est « le serveur en amont a répondu n’importe quoi ou est mort » ; 504, c’est « le serveur en amont n’a jamais répondu ». Le second est un délai que vous pouvez régler ; le premier, une panne qu’il faut réparer.
- Les deux signifient qu’il n’y a rien. 410 signifie en plus que cela ne reviendra jamais, et les moteurs de recherche en tiennent compte en quelques jours plutôt qu’en quelques mois.
- 405, c’est « pas sur cette URL, mais voici ce qui marche » — et il doit envoyer un en-tête `Allow`. 501, c’est « ce serveur n’implémente cette méthode nulle part ».
Comment s’en servir
Cherchez, ou filtrez par classe
Tapez un numéro, un nom, ou le problème que vous avez — « gateway », « rate limit », « unauthorized ». L'index de recherche ne contient pas de français : « authentification » ne trouve rien, « authentication » si. Ou restreignez à 4xx et lisez vers le bas.
Ouvrez-en un pour le détail
Le panneau de détail donne la spécification qui le définit, s'il est cachable par heuristique, et tout en-tête que la réponse est tenue de porter — un 405 sans `Allow` et un 301 sans `Location` sont l'un et l'autre incomplets.
Lisez les paires que l'on confond
La section du bas couvre ceux que l'on choisit mal : 401 contre 403, 302 contre 307, 502 contre 504.
Questions fréquentes
Quelle est la différence entre 401 et 403 ?
401 veut dire que la requête n'avait pas d'identifiants valides et doit inclure un en-tête `WWW-Authenticate` qui dit comment les fournir. 403 veut dire que les identifiants ont été compris et qu'ils ne suffisent pas. Envoyer 401 à un utilisateur connecté mais sans droits est l'erreur courante.
Pourquoi mon CDN met-il un 404 en cache ?
Parce qu'il en a le droit. Le RFC 9110 §15.1 liste les codes de statut qu'un cache peut stocker par heuristique quand rien ne dit le contraire, et 404 en fait partie. Une page que vous avez publiée depuis reste introuvable jusqu'à l'expiration du cache ou jusqu'à ce que vous le purgiez — envoyez `Cache-Control: no-store` sur un 404 dont vous attendez qu'il devienne un 200.
302 ou 307 ?
307 si vous voulez que la méthode soit préservée. Historiquement, les clients transformaient un POST en GET sur un 302 — la spécification ne le demandait pas, mais tout le monde le faisait — d'où l'existence de 307 et 308 pour dire sans ambiguïté « même méthode, nouvelle URL ».
Puis-je inventer mon propre code de statut ?
Vous pouvez envoyer n'importe quoi, et les clients traiteront un code inconnu comme le membre générique de sa classe — un 499 est traité comme un 400. Mais les caches, les proxys et les bibliothèques décident d'après la classe : un code non enregistré ne vous apporte donc rien qu'un en-tête ne porterait mieux.
À alimenter depuis
Recherche de type MIME
MIME Type Lookup
Retrouve un type MIME depuis une extension ou l’inverse, et devine le type à partir des premiers octets d’un fichier.
Inspecteur d’en-têtes HTTP
HTTP Header Inspector
Interroge une adresse et montre les en-têtes de réponse complets, la chaîne de redirections, les temps de réponse et la compression employée.
Formateur et validateur JSON
JSON Formatter & Validator
Met en forme, minifie et valide du JSON en désignant la ligne et la colonne exactes de l’erreur de syntaxe.
Formateur et validateur YAML
YAML Formatter & Validator
Réindente le YAML de façon cohérente, le valide et signale les tabulations et les ancres qui font échouer les analyseurs.
Ensuite
Ces outils acceptent ce que celui-ci produit : le résultat peut y aller directement.
Constructeur de requêtes HTTP
HTTP Request Builder
Compose et envoie une requête GET, POST, PUT, PATCH, DELETE ou HEAD avec en-têtes et corps personnalisés, et montre le statut, les en-têtes, le corps et le temps de réponse — sans jamais transmettre de cookies ni d’en-tête Authorization.
Inspecteur d’en-têtes HTTP
HTTP Header Inspector
Interroge une adresse et montre les en-têtes de réponse complets, la chaîne de redirections, les temps de réponse et la compression employée.
Recherche de type MIME
MIME Type Lookup
Retrouve un type MIME depuis une extension ou l’inverse, et devine le type à partir des premiers octets d’un fichier.
Encodeur et décodeur Base64
Base64 Encoder & Decoder
Encode et décode en Base64 et en Base64URL, pour du texte comme pour des fichiers, avec un traitement correct de l’UTF-8.
curl vers code
curl to Code
Traduit une commande curl en fetch, axios, requests Python, Go, PHP ou PowerShell.
Hachage de texte
Text Hash
Calcule le MD5, le SHA-1, le SHA-256, le SHA-384, le SHA-512 et le CRC-32 d’une chaîne, avec sortie en majuscules ou en Base64.