Voici une référence consultable de tous les codes de statut de réponse HTTP standard du registre de l'IANA, de <code>100 Continue</code> à <code>511 Network Authentication Required</code>. Chaque code est accompagné d'une explication en langage simple, de conseils sur le moment où un serveur ou une API doit l'envoyer, des en-têtes de réponse associés et d'un lien vers la RFC qui le définit. Les codes non officiels courants — le <code>499</code> de nginx, le <code>419</code> de Laravel, les <code>520</code>–<code>526</code> de Cloudflare — sont inclus et clairement signalés. Recherchez par numéro, nom ou mot-clé, comme « redirect » ou « rate limit ».
Comment rechercher un code de statut
- 1Saisissez un code (
404), son début (40), une classe (4xx), un nom (teapot) ou un mot-clé (rate limit, cache, Retry-After). - 2Limitez la liste à une classe avec les filtres 1xx–5xx, ou masquez les codes non officiels.
- 3Sélectionnez un code — à la souris ou avec les flèches du clavier — pour voir sa signification, quand l'utiliser, les en-têtes associés et la spécification.
- 4Copiez le code ou la ligne de statut complète, ou partagez l'URL de la page : elle se termine par
#404 et s'ouvre sur ce code.
Les cinq classes de codes de statut
Un client qui reçoit un code qu'il ne connaît pas le traite comme le code x00 de sa classe : un 499 inconnu est géré comme un 400 et un 299 inconnu comme un 200. C'est pourquoi un nouveau code peut être introduit sans casser les anciens logiciels.
- 1xx Information
- Réponses provisoires envoyées avant la réponse finale : 100 Continue, 101 Switching Protocols pour les WebSockets, 103 Early Hints pour le préchargement.
- 2xx Succès
- La requête a abouti. 200 OK est le code par défaut ; 201 Created et 204 No Content précisent ce qui s'est passé.
- 3xx Redirection
- Le client doit chercher ailleurs, généralement à l'URL de l'en-tête Location — ou, pour 304 Not Modified, utiliser sa copie en cache.
- 4xx Erreur client
- La requête était incorrecte : mal formée, non authentifiée, interdite, pour une ressource inexistante ou trop fréquente. La renvoyer telle quelle ne servira à rien.
- 5xx Erreur serveur
- La requête était peut-être correcte, mais le serveur, ou un élément derrière lui, a échoué. Ces erreurs sont souvent temporaires et méritent une nouvelle tentative avec un délai croissant (back-off).
Choisir le bon code pour une API
La plupart des API n'ont besoin que d'une douzaine de codes. En cas de succès : 200 avec un corps, 201 avec un en-tête Location quand quelque chose a été créé, 202 quand le traitement a lieu plus tard et 204 quand il n'y a rien à renvoyer. Pour les erreurs client : 400 pour les requêtes mal formées, 422 pour des données bien formées qui échouent à la validation, 401 quand les identifiants manquent ou sont invalides, 403 quand ils sont valides mais insuffisants, 404 pour les ressources inconnues, 409 pour les conflits comme un e-mail en double et 429 pour la limitation de débit. Pour les erreurs serveur : 500 pour les bugs, et 502, 503 et 504 pour les pannes de l'infrastructure intermédiaire.
Quel que soit le code, renvoyez un corps qui l'explique. La RFC 9457 « Problem Details » (application/problem+json) donne à ce corps une forme standard avec les champs type, title, status et detail. Ne renvoyez jamais 200 avec une erreur dans le corps : les caches, la supervision et la logique de nouvelle tentative lisent le code de statut, pas votre JSON. Pour mettre en forme ce corps, utilisez le formateur JSON.
Les codes souvent confondus
- 401 vs 403
- 401 Unauthorized signifie « je ne sais pas qui vous êtes » : connectez-vous ou envoyez un jeton valide. 403 Forbidden signifie « je sais qui vous êtes, et vous n'avez pas le droit de faire ça ».
- 301 vs 302 vs 307 vs 308
- 301 et 308 sont permanents et transmettent le référencement à la nouvelle URL ; 302 et 307 sont temporaires. 307 et 308 garantissent que la méthode et le corps sont conservés, alors que les navigateurs transforment un POST en GET avec 301 et 302.
- 400 vs 422
- 400 concerne les requêtes que le serveur ne peut pas analyser du tout ; 422 un JSON valide dont le contenu enfreint les règles, comme un champ obligatoire manquant.
- 404 vs 410
- 404 indique qu'il n'y a rien ici pour l'instant ; 410 qu'il y avait quelque chose et que cela a été supprimé volontairement, ce qui pousse les moteurs de recherche à le retirer plus vite.
- 502 vs 504
- Les deux viennent d'un proxy ou d'un répartiteur de charge. 502 signifie que le serveur en amont a répondu de façon invalide ou a fermé la connexion ; 504 qu'il n'a pas répondu à temps.
- 500 vs 503
- 500 est une panne inattendue, généralement un bug. 503 est une situation connue et temporaire — maintenance ou surcharge — et devrait inclure Retry-After.
Codes de statut et SEO
Les moteurs de recherche lisent attentivement les codes de statut. Utilisez 301 ou 308 quand une page déménage définitivement, pour que son référencement la suive ; un 302 leur indique que l'ancienne URL reste celle à indexer. Servez un vrai 404 ou 410 pour les pages absentes — une page « introuvable » qui renvoie 200 est une « soft 404 » et gaspille le budget d'exploration. Pendant une maintenance, renvoyez 503 avec Retry-After pour que les pages ne soient pas désindexées. Contrôlez ce que les robots peuvent explorer avec le générateur de robots.txt.
Les réponses 200, 203, 204, 206, 300, 301, 308, 404, 405, 410, 414, 451 et 501 peuvent être mises en cache par les navigateurs et les CDN même sans en-têtes de fraîcheur explicites : un 404 ou un 301 accidentel peut donc persister ; définissez Cache-Control délibérément pour ces codes.
Les codes non officiels que vous verrez dans les logs
Certains codes ne figurent pas dans le registre de l'IANA mais sont courants en pratique. nginx journalise 499 quand le client raccroche avant la réponse et 444 quand il a fermé une connexion sans répondre. Cloudflare renvoie 520–526 quand il n'obtient pas de réponse correcte du serveur d'origine : 521 signifie que l'origine a refusé la connexion, 522 que le délai a expiré, 524 qu'elle a mis plus de 100 secondes à répondre et 525/526 que le TLS vers l'origine a échoué. Laravel envoie 419 quand un jeton CSRF a expiré. Ces codes sont marqués « non officiel » dans la liste et peuvent être masqués.
- Qu'est-ce qu'un code de statut HTTP ?
- Un nombre à trois chiffres au début de chaque réponse HTTP qui indique au client comment s'est passée la requête. Le premier chiffre donne la classe : 1xx information, 2xx succès, 3xx redirection, 4xx erreur client et 5xx erreur serveur.
- Quelle est la différence entre 401 et 403 ?
- 401 Unauthorized signifie que la requête n'a pas d'identifiants valides, donc se connecter peut aider. 403 Forbidden signifie que le serveur sait qui vous êtes mais que vous n'avez pas l'autorisation, donc se reconnecter n'y changera rien.
- Faut-il utiliser 301 ou 302 pour une redirection ?
- Utilisez 301 (ou 308) quand le déplacement est permanent, comme un changement d'URL ou une migration de domaine ; les moteurs de recherche transfèrent le référencement de la page vers la nouvelle adresse. Utilisez 302 (ou 307) quand l'URL d'origine reviendra.
- Que signifie 429 Too Many Requests ?
- Le client est soumis à une limitation de débit. Attendez avant de réessayer : l'en-tête Retry-After, s'il est présent, indique combien de secondes ou jusqu'à quelle heure. Les clients doivent espacer leurs tentatives de façon exponentielle plutôt que réessayer immédiatement.
- Qu'est-ce qui provoque une erreur 502 Bad Gateway ?
- Un proxy, un répartiteur de charge ou un CDN placé devant le site a reçu une réponse invalide du serveur situé derrière — généralement parce que l'application a planté, redémarré ou fermé la connexion. La correction se fait côté serveur, dans les logs de l'application en amont.
- Qu'est-ce que le code de statut 499 ?
- Un code propre à nginx, journalisé quand le client a fermé la connexion avant que nginx ne puisse envoyer la réponse. Le client ne le reçoit jamais. Beaucoup de 499 signifient généralement que le backend est trop lent et que les clients abandonnent.
- 418 I'm a teapot est-il un vrai code de statut ?
- Il est né d'un poisson d'avril dans la RFC 2324 (1998). Il n'est pas destiné à un usage réel, mais comme tant de logiciels l'implémentent, la RFC 9110 réserve le 418 pour qu'il ne soit jamais attribué à autre chose.
- Combien existe-t-il de codes de statut HTTP ?
- Le registre de l'IANA définit environ 63 codes, dont quelques-uns réservés ou obsolètes comme 306 et 305. Les codes de 100 à 599 sont possibles, et les clients traitent tout code inconnu comme le code x00 de sa classe.