Codes de statut HTTP
Tous les codes de statut HTTP enregistrés : ce qu’ils signifient, quand on les rencontre et où ils sont définis.
Select a code
Qu’est-ce qu’un code de statut HTTP ?
Chaque réponse HTTP commence par un code de statut à trois chiffres qui indique ce qui est arrivé à la requête. Le premier chiffre donne la classe : 1xx est informatif, 2xx signifie succès, 3xx redirection, 4xx que la requête était incorrecte et 5xx que le serveur a échoué.
Les codes sont définis dans la RFC 9110, HTTP Semantics, qui a remplacé la RFC 7231 en 2022, et dans quelques autres RFC comme la RFC 6585 pour 429 Too Many Requests. L’IANA tient le registre officiel. La RFC 9110 a renommé deux codes : 413 s’appelle désormais Content Too Large (anciennement Payload Too Large) et 422 Unprocessable Content (anciennement Unprocessable Entity). Les numéros et leur comportement n’ont pas changé.
Certains codes que vous croiserez ne figurent pas dans le registre. nginx journalise 499 quand un client ferme la connexion avant que la réponse soit prête, Cloudflare renvoie de 520 à 526 quand il n’obtient pas de réponse exploitable du serveur d’origine, et Laravel renvoie 419 quand le jeton CSRF d’un formulaire a expiré. Ils sont listés à part, marqués comme non officiels.
Le code de statut est la première chose qu’un test d’API doit vérifier, car le reste de la réponse en dépend. Un 201 Created indique qu’un POST a créé une nouvelle ressource, un 404 que la ressource n’existe pas et un 500 que le serveur a échoué ; dans ce cas, le corps peut être une page d’erreur au lieu du JSON attendu.
Comment utiliser cet outil
- 1Parcourez la liste, groupée de 1xx à 5xx avec les codes non officiels à la fin, ou filtrez-la avec les boutons de classe.
- 2Recherchez par numéro, nom ou symptôme, comme
404,5xx,redirect,timeoutou un ancien nom commeUnprocessable Entity. Appuyez sur / pour aller au champ de recherche depuis n’importe où sur la page. - 3Sélectionnez un code, ou parcourez la liste avec les flèches du clavier, pour voir ce qu’il signifie, quand on le rencontre, la spécification qui le définit et les codes voisins à comparer.
- 4Copiez la commande
curlsous Try it pour que l’endpoint de statut de testingapis.com renvoie ce code, ou copiez un lien :/fr/tools/http-status/#429ouvre directement le 429.
Dépannage
- Un 401 alors que vous avez envoyé un jeton
- Le jeton est expiré, mal formé, envoyé dans le mauvais en-tête ou il lui manque le préfixe
Bearer. L’en-tête de réponseWWW-Authenticateindique souvent lequel. Un 403, en revanche, signifie que le jeton est valide mais n’a pas la permission. - Un 415 pour un corps JSON
- La requête n’a pas d’en-tête
Content-Type: application/json, donc le serveur ne traite pas le corps comme du JSON. Le-dde curl envoieapplication/x-www-form-urlencodedsauf si vous définissez l’en-tête. - Un POST devient un GET après une redirection
- Les clients suivent les 301 et 302 en répétant la requête en GET, sans corps. Les serveurs qui doivent conserver la méthode doivent envoyer 307 ou 308.
- Un 502 ou un 504 venant d’un répartiteur de charge
- Le proxy placé devant l’application n’a pas reçu de réponse valide : 502 quand l’application a planté ou fermé la connexion, 504 quand elle a dépassé le délai du proxy. Les logs de l’application elle-même montrent la cause.
- 499 dans les logs nginx
- Le client a abandonné avant que la réponse soit prête : un utilisateur a quitté la page, ou un client ou un proxy en amont a atteint son délai. La cause habituelle est un backend lent.
Questions fréquentes
Quelle est la différence entre 401 et 403 ?
401 Unauthorized signifie que le serveur ne sait pas qui vous êtes : les identifiants sont absents, expirés ou erronés. 403 Forbidden signifie qu’il sait qui vous êtes, mais que cette identité n’a pas le droit de faire cela. Se reconnecter peut régler un 401, pas un 403.
Une API doit-elle renvoyer 400 ou 422 pour une entrée invalide ?
Les deux sont utilisés. Une convention courante est 400 pour une requête que le serveur ne peut pas lire du tout, comme un JSON mal formé, et 422 pour des données bien formées qui enfreignent une règle, comme un champ obligatoire manquant ou un e-mail invalide.
Quelle est la différence entre 502, 503 et 504 ?
Les trois viennent généralement d’un proxy ou d’un répartiteur de charge placé devant l’application. 502 Bad Gateway signifie qu’il a reçu une réponse invalide du serveur derrière lui, 503 Service Unavailable que le service est surchargé ou en maintenance, et 504 Gateway Timeout que le serveur derrière lui n’a pas répondu à temps.
Quel code de redirection utiliser ?
301 et 308 sont permanents, 302 et 307 temporaires. 307 et 308 imposent au client de répéter la requête avec la même méthode et le même corps, alors que les clients transforment généralement un POST en GET après un 301 ou un 302. Utilisez 303 See Other pour envoyer un client vers une page de résultat après un POST.
418 I'm a teapot est-il un vrai code de statut ?
Il vient de la RFC 2324, un poisson d’avril de 1998 sur le contrôle des cafetières. La RFC 9110 liste le 418 comme inutilisé mais réservé, parce que beaucoup de logiciels le reconnaissent déjà. Il n’est pas fait pour de vraies erreurs.
Comment tester la façon dont mon application gère un code de statut précis ?
Appelez un endpoint qui renvoie le code demandé. GET https://api.testingapis.com/api/status/503 répond avec un 503 et les en-têtes que ce statut porte habituellement, comme Retry-After. N’importe quel code de 200 à 599 fonctionne.