Aide-mémoire Web et HTTP

Aide-mémoire des codes d'état HTTP

Les codes d'état HTTP que vous rencontrerez vraiment, par classe, avec les paires qu'on confond (401 ou 403, 301 ou 308) et des conseils pour choisir les codes d'une API.

Dernière vérification:

AdSense Placeholder
Slot: header_reference_page
Sur cette page

Toute réponse HTTP commence par un code d'état à trois chiffres. Le premier chiffre est la classe ; les deux autres la précisent. Cette page liste les codes que vous rencontrerez le plus souvent. Pour tous les codes, avec recherche, utilisez le Recherche de Code de Statut HTTP.

1xx Informatifs

Code Nom Signification
100 Continue Le client peut continuer à envoyer le corps de la requête
101 Switching Protocols Passage à un autre protocole, comme WebSocket

2xx Succès

Code Nom Signification
200 OK La requête a abouti et la réponse contient le résultat
201 Created Une ressource a été créée (typique d'un POST)
202 Accepted Acceptée pour traitement, pas encore terminée
204 No Content Succès sans corps à renvoyer (typique d'un DELETE)
206 Partial Content Seulement la plage d'octets demandée (téléchargements reprenables, vidéo)

3xx Redirection

Code Nom Signification
301 Moved Permanently Déplacé définitivement : mettez à jour liens et favoris
302 Found Temporairement ailleurs : continuez à utiliser l'URL d'origine
303 See Other Faites un GET sur une autre URL (après un POST)
304 Not Modified Non modifié : utilisez votre copie en cache
307 Temporary Redirect Redirection temporaire qui conserve la méthode et le corps
308 Permanent Redirect Redirection permanente qui conserve la méthode et le corps

4xx Erreur du client

Code Nom Signification
400 Bad Request La requête est mal formée ou invalide
401 Unauthorized Non authentifié : identifiants manquants ou incorrects
403 Forbidden Authentifié mais non autorisé à le faire
404 Not Found Rien n'existe à cette URL
405 Method Not Allowed L'URL existe mais pas pour cette méthode
406 Not Acceptable Impossible de produire une réponse acceptée par le client
408 Request Timeout Le serveur a renoncé à attendre la requête
409 Conflict En conflit avec l'état actuel (collision d'édition, doublon)
410 Gone Disparu définitivement : plus fort que 404
413 Content Too Large Le corps de la requête est trop volumineux
414 URI Too Long L'URL est trop longue
415 Unsupported Media Type Le format du corps (Content-Type) n'est pas pris en charge
416 Range Not Satisfiable La plage d'octets demandée ne peut pas être servie
418 I'm a Teapot Le serveur est une théière (un poisson d'avril, RFC 2324)
422 Unprocessable Content Bien formée mais sémantiquement invalide (courant dans les API)
429 Too Many Requests Trop de requêtes : limitation de débit, voir Retry-After
431 Request Header Fields Too Large Les en-têtes de la requête sont trop volumineux
451 Unavailable For Legal Reasons Bloqué pour des raisons légales

5xx Erreur du serveur

Code Nom Signification
500 Internal Server Error Une défaillance générique côté serveur
501 Not Implemented Le serveur ne prend pas en charge cette fonction ou méthode
502 Bad Gateway Une passerelle ou un proxy a reçu une mauvaise réponse en amont
503 Service Unavailable Temporairement indisponible (surcharge, maintenance)
504 Gateway Timeout Une passerelle ou un proxy a expiré en attendant l'amont
505 HTTP Version Not Supported La version HTTP n'est pas prise en charge

Paires faciles à confondre

  • 401 ou 403. 401 signifie « je ne sais pas qui vous êtes » (connectez-vous, ou votre jeton est faux ou expiré). 403 signifie « je sais qui vous êtes, et la réponse est non ».
  • 301, 302, 307 et 308. La paire permanente est 301 et 308 ; la paire temporaire est 302 et 307. Les plus récents 307 et 308 garantissent que la méthode et le corps sont répétés à l'identique, alors que de vieux clients peuvent transformer un POST en GET après un 301 ou 302.
  • 404 ou 410. Les deux signifient « ce n'est pas ici ». 410 indique une suppression volontaire et définitive, ce qui aide les moteurs de recherche à oublier l'URL plus vite.
  • 502, 503 et 504. 502 : le serveur en amont a répondu de travers. 503 : le service est en panne ou surchargé, volontairement ou non. 504 : le serveur en amont n'a pas répondu à temps.
  • 400 ou 422. 400 concerne les requêtes que le serveur ne peut pas analyser ; 422 celles qu'il a bien analysées mais ne peut pas accepter, comme un JSON valide contenant une adresse e-mail invalide.

Choisir un code pour une API

  • Renvoyez 200 avec un corps pour les lectures et mises à jour, 201 avec un en-tête Location pour les créations et 204 quand il n'y a rien à renvoyer.
  • Utilisez 404 pour une ressource absente et 409 pour un conflit, pas 400 pour tout.
  • Utilisez 401 seulement avec un défi d'authentification, et 403 pour les problèmes de droits.
  • Ajoutez Retry-After à 429 et 503 pour que les clients sachent quand réessayer.
  • Ne cachez pas les erreurs derrière un 200 : outils de supervision, caches et clients s'appuient sur le code d'état.

À lire aussi : HTTP, Redirection, Limitation de débit (rate limiting) et Aide-mémoire des en-têtes HTTP.

Essayez ces outils

Voir aussi

  • Glossaire HTTP
    Le HTTP (Hypertext Transfer Protocol) est le protocole que les navigateurs et les serveurs utilisent pour demander et envoyer des pages.
  • Glossaire Redirection
    Une redirection est une réponse du serveur qui envoie le navigateur vers une autre URL, avec un code d'état 3xx et un en-tête Location.
  • Glossaire Limitation de débit (rate limiting)
    La limitation de débit restreint le nombre de requêtes qu'un client peut faire à un service dans un temps donné.
  • Aide-mémoire Aide-mémoire des en-têtes HTTP
    En-têtes de requête et de réponse, directives Cache-Control, en-têtes de sécurité, attributs de cookie et en-têtes CORS.
AdSense Placeholder
Slot: footer_leaderboard