Aller au contenu

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.

🔒 Fonctionne entièrement dans votre navigateurhttpstatusreference

Cherche dans le code, le nom, le résumé et les remarques — en anglais, coréen, japonais, chinois simplifié et espagnol.

Classe

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.

Défini dans
RFC 9110 §15.5.5
Cacheable 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

Tous les codes de statut HTTP, avec leur signification.
CodeNomSignifieCacheable
100ContinueLe client peut continuer et envoyer le corps de la requête.non
101Switching ProtocolsLe serveur bascule vers le protocole demandé par le client.non
102ProcessingWebDAV : la requête est en cours de traitement.non
103Early HintsDes en-têtes préliminaires, pour que le client commence à précharger avant la vraie réponse.non
200OKLa requête a réussi.oui
201CreatedUne nouvelle ressource a été créée.non
202AcceptedLa requête a été acceptée mais n’a pas encore été exécutée.non
203Non-Authoritative InformationUn mandataire a modifié la réponse qu’il relaie.oui
204No ContentRéussite, et il n’y a délibérément pas de corps.oui
205Reset ContentRéussite ; le client devrait vider le formulaire qu’il a envoyé.non
206Partial ContentLa plage d’octets demandée.oui
207Multi-StatusWebDAV : un corps XML avec un statut par sous-requête.non
208Already ReportedWebDAV : ce membre a déjà été énuméré.non
226IM UsedLa réponse est le résultat de manipulations d’instance appliquées.non
300Multiple ChoicesPlusieurs représentations existent ; choisissez-en une.oui
301Moved PermanentlyLa ressource a une nouvelle URL, définitivement.oui
302FoundUne redirection temporaire.non
303See OtherAllez chercher l’autre URL avec GET.non
304Not ModifiedLa copie en cache est encore bonne.non
305Use ProxyObsolète : le client devrait utiliser le mandataire indiqué.non
307Temporary RedirectUne redirection temporaire qui conserve la méthode.non
308Permanent RedirectUne redirection permanente qui conserve la méthode.oui
400Bad RequestLa requête est mal formée et le serveur ne la traitera pas.non
401UnauthorizedUne authentification est requise, ou les identifiants fournis ont été refusés.non
402Payment RequiredRéservé, et on ne lui a jamais donné de sens.non
403ForbiddenLe serveur a compris, et refuse.non
404Not FoundAucune ressource à cette URL.oui
405Method Not AllowedL’URL existe ; cette méthode ne s’y applique pas.oui
406Not AcceptableRien de ce que le serveur peut produire ne correspond à l’en-tête `Accept`.non
407Proxy Authentication RequiredLe mandataire réclame des identifiants.non
408Request TimeoutLe client a mis trop de temps à envoyer la requête.non
409ConflictLa requête entre en conflit avec l’état actuel.non
410GoneC’était ici et cela ne reviendra pas, délibérément.oui
411Length RequiredUn en-tête `Content-Length` est obligatoire.non
412Precondition FailedUne condition `If-Match` ou `If-Unmodified-Since` n’a pas été remplie.non
413Content Too LargeLe corps est plus gros que ce que le serveur accepte.non
414URI Too LongL’URL est plus longue que ce que le serveur accepte.oui
415Unsupported Media TypeLe `Content-Type` du corps n’est pas de ceux que le serveur traite.non
416Range Not SatisfiableLa plage demandée se situe en dehors de la ressource.non
417Expectation FailedL’en-tête `Expect` ne peut pas être satisfait.non
418I'm a teapotUn poisson d’avril de 1998 qui n’est jamais reparti.non
421Misdirected RequestCe serveur ne peut pas produire de réponse pour cette autorité.non
422Unprocessable ContentBien formé, mais sémantiquement faux.non
423LockedWebDAV : la ressource est verrouillée.non
424Failed DependencyWebDAV : une requête précédente de la séquence a échoué.non
425Too EarlyLe serveur refuse de risquer le rejeu d’une requête envoyée en données précoces.non
426Upgrade RequiredLe client doit changer de protocole.non
428Precondition RequiredLe serveur exige que la requête soit conditionnelle.non
429Too Many RequestsDébit limité.non
431Request Header Fields Too LargeLes en-têtes sont trop gros.non
451Unavailable For Legal ReasonsBloqué à la suite d’une demande légale.oui
500Internal Server ErrorQuelque chose s’est mal passé et le serveur n’a rien de plus précis à dire.non
501Not ImplementedLe serveur ne prend pas du tout en charge cette méthode.oui
502Bad GatewayUn serveur en amont a envoyé quelque chose d’invalide.non
503Service UnavailableTemporairement incapable de traiter la requête.non
504Gateway TimeoutUn serveur en amont n’a pas répondu à temps.non
505HTTP Version Not SupportedLa version de HTTP indiquée dans la requête n’est pas prise en charge.non
506Variant Also NegotiatesUne erreur de configuration de la négociation de contenu.non
507Insufficient StorageWebDAV : pas assez de place pour stocker la représentation.non
508Loop DetectedWebDAV : une boucle infinie pendant le traitement.non
510Not ExtendedDes extensions supplémentaires sont nécessaires.non
511Network Authentication RequiredUn 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 ».
Ici, « cacheable » signifie cacheable de manière heuristique : la RFC 9110 §15.1 énumère les codes qu’un cache peut conserver quand rien ne dit le contraire. 404 est sur cette liste, et c’est ainsi qu’un CDN finit par servir un « introuvable » pour une page que vous avez publiée depuis.

Comment s’en servir

  1. 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.

  2. 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.

  3. 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

Ensuite

Ces outils acceptent ce que celui-ci produit : le résultat peut y aller directement.