Menu
Français

Codes d'état HTTP

Référence consultable pour chaque code d'état HTTP avec des explications claires.

Dernière mise à jour

  • 100Continue

    1xx

    La partie initiale de la requête a été reçue ; le client peut continuer à envoyer le corps.

  • 101Switching Protocols

    1xx

    Le serveur accepte de changer de protocole (ex. HTTP/1.1 vers WebSocket).

  • 102Processing

    1xx

    WebDAV — la requête a été acceptée mais n'est pas encore terminée.

  • 103Early Hints

    1xx

    Utilisé avec l'en-tête Link pour permettre au client de précharger des ressources avant la réponse finale.

  • 200OK

    2xx

    La requête a réussi. La signification exacte dépend de la méthode.

  • 201Created

    2xx

    La requête a réussi et une nouvelle ressource a été créée.

  • 202Accepted

    2xx

    La requête a été acceptée pour traitement mais n'est pas encore terminée (travail asynchrone).

  • 203Non-Authoritative Information

    2xx

    Les métadonnées renvoyées proviennent d'un proxy de transformation, pas du serveur d'origine.

  • 204No Content

    2xx

    La requête a réussi mais il n'y a pas de corps à renvoyer.

  • 205Reset Content

    2xx

    Indique au client de réinitialiser la vue du document qui a envoyé la requête (ex. vider le formulaire).

  • 206Partial Content

    2xx

    Utilisé en réponse à une requête Range — le corps ne contient que la plage d'octets demandée.

  • 300Multiple Choices

    3xx

    La ressource a plusieurs représentations ; le client doit en choisir une.

  • 301Moved Permanently

    3xx

    La ressource a une nouvelle URL permanente. Les moteurs de recherche mettent à jour leur index.

  • 302Found

    3xx

    La ressource est temporairement à une autre URL. Utilisez 307 si vous devez conserver la méthode.

  • 303See Other

    3xx

    Après un POST, redirige le client pour récupérer le résultat avec GET (Post/Redirect/Get).

  • 304Not Modified

    3xx

    La copie en cache est toujours à jour — envoyé en réponse à des GET conditionnels (ETag / If-Modified-Since).

  • 307Temporary Redirect

    3xx

    Comme 302, mais la méthode de requête ne doit pas être modifiée en suivant la redirection.

  • 308Permanent Redirect

    3xx

    Comme 301, mais la méthode de requête ne doit pas être modifiée en suivant la redirection.

  • 400Bad Request

    4xx

    Le serveur ne peut pas ou ne veut pas traiter la requête en raison d'une erreur client (syntaxe invalide, cadrage invalide).

  • 401Unauthorized

    4xx

    L'authentification est requise et a échoué ou n'a pas été fournie. (Malgré le nom, il s'agit d'authentification, pas d'autorisation.)

  • 402Payment Required

    4xx

    Réservé pour un usage futur. Parfois utilisé par les API pour indiquer que l'utilisateur a atteint un quota payant.

  • 403Forbidden

    4xx

    Le serveur a compris la requête mais refuse de l'autoriser. Se réauthentifier ne servira à rien.

  • 404Not Found

    4xx

    Le serveur ne trouve pas la ressource demandée.

  • 405Method Not Allowed

    4xx

    La méthode de requête est connue du serveur mais n'est pas prise en charge par la ressource cible.

  • 406Not Acceptable

    4xx

    Le serveur ne peut pas produire de réponse correspondant aux en-têtes Accept envoyés par le client.

  • 407Proxy Authentication Required

    4xx

    Comme 401, mais l'authentification est requise pour un proxy.

  • 408Request Timeout

    4xx

    Le serveur a expiré en attendant la requête.

  • 409Conflict

    4xx

    La requête entre en conflit avec l'état actuel de la ressource cible (ex. conflit de version).

  • 410Gone

    4xx

    La ressource a été définitivement supprimée, sans adresse de redirection.

  • 411Length Required

    4xx

    Le serveur requiert un en-tête Content-Length.

  • 412Precondition Failed

    4xx

    Une précondition dans les en-têtes de la requête (ex. If-Match) n'a pas été satisfaite par le serveur.

  • 413Payload Too Large

    4xx

    Le corps de la requête est plus grand que ce que le serveur est prêt à traiter.

  • 414URI Too Long

    4xx

    L'URI est plus longue que ce que le serveur est prêt à interpréter.

  • 415Unsupported Media Type

    4xx

    Le corps de la requête utilise un type de média que le serveur ou la ressource ne prend pas en charge.

  • 416Range Not Satisfiable

    4xx

    L'en-tête Range demande une portion du fichier hors de ses limites.

  • 418I'm a teapot

    4xx

    Une blague du 1er avril issue du RFC 2324. Renvoyé par les serveurs qui refusent de préparer du café.

  • 421Misdirected Request

    4xx

    La requête a été envoyée à un serveur incapable de produire une réponse (ex. mauvaise connexion HTTP/2).

  • 422Unprocessable Entity

    4xx

    La requête est bien formée mais contient des erreurs sémantiques (souvent utilisé par les API pour les échecs de validation).

  • 423Locked

    4xx

    WebDAV — la ressource accédée est verrouillée.

  • 425Too Early

    4xx

    Le serveur ne souhaite pas traiter une requête susceptible d'être rejouée.

  • 426Upgrade Required

    4xx

    Le client doit passer à un autre protocole (ex. TLS) pour terminer la requête.

  • 428Precondition Required

    4xx

    Le serveur requiert que la requête soit conditionnelle (aide à éviter le problème de mise à jour perdue).

  • 429Too Many Requests

    4xx

    Le client a envoyé trop de requêtes dans un laps de temps donné (limitation de débit).

  • 431Request Header Fields Too Large

    4xx

    Le serveur refuse la requête car un champ d'en-tête — ou l'ensemble des en-têtes — est trop volumineux.

  • 451Unavailable For Legal Reasons

    4xx

    La ressource est indisponible pour des raisons légales (nom inspiré de Fahrenheit 451).

  • 500Internal Server Error

    5xx

    Le serveur a rencontré une condition inattendue. L'erreur 5xx générique.

  • 501Not Implemented

    5xx

    Le serveur ne reconnaît pas la méthode de requête.

  • 502Bad Gateway

    5xx

    Le serveur, agissant comme passerelle, a reçu une réponse invalide du serveur en amont.

  • 503Service Unavailable

    5xx

    Le serveur n'est pas prêt à traiter la requête — généralement surchargé ou en maintenance.

  • 504Gateway Timeout

    5xx

    Le serveur, agissant comme passerelle, n'a pas reçu de réponse à temps du serveur en amont.

  • 505HTTP Version Not Supported

    5xx

    Le serveur ne prend pas en charge la version HTTP utilisée dans la requête.

  • 507Insufficient Storage

    5xx

    WebDAV — le serveur ne peut pas stocker la représentation nécessaire pour terminer la requête.

  • 508Loop Detected

    5xx

    WebDAV — le serveur a détecté une boucle infinie pendant le traitement.

  • 511Network Authentication Required

    5xx

    Le client doit s'authentifier pour accéder au réseau (portails captifs).

C'est quoi les codes de statut HTTP ?

Les codes de statut HTTP sont les nombres à trois chiffres qu'un serveur place en tête de chaque réponse pour résumer ce qu'il s'est passé. C'est grâce à eux que les navigateurs, clients, proxys et CDN savent s'ils doivent mettre en cache, rediriger, réessayer ou afficher une erreur à l'utilisateur.

Chaque code appartient à l'une des cinq classes définies par son premier chiffre : 1xx informationnel, 2xx succès, 3xx redirection, 4xx erreur côté client, 5xx erreur côté serveur. Une fois la classe identifiée, on devine généralement le sens global avant même de chercher le code précis.

La plupart des applis n'utilisent qu'un noyau réduit (200, 201, 204, 301, 302, 304, 400, 401, 403, 404, 409, 422, 429, 500, 502, 503). Bien comprendre ce que chacun *signifie* — et savoir distinguer 401 Unauthorized de 403 Forbidden, ou 301 Moved Permanently de 302 Found — c'est ce qui fait la différence entre un dev backend correct et un dev backend solide.

Ce que vous allez apprendre avec cette référence

  • Le premier chiffre donne toujours la classe : 1xx info, 2xx succès, 3xx redirection, 4xx erreur client, 5xx erreur serveur.
  • Les codes de statut font *partie du contrat* d'une API — les clients doivent s'appuyer dessus pour brancher leur logique, pas parser un message d'erreur dans le corps.
  • 4xx veut dire que le client a fait quelque chose de travers (mauvaise entrée, auth manquante, ressource inexistante). 5xx veut dire que le serveur a planté, peu importe ce que le client a envoyé.

Comment utiliser la référence pas à pas

  1. Cherchez par code ou par mot-clé

    Tapez un nombre (404, 429) ou un mot-clé (auth, redirect, rate limit) et la liste se filtre en direct.

  2. Filtrez par classe

    Utilisez les puces de classe (1xx, 2xx, 3xx, 4xx, 5xx) pour réduire la liste quand vous explorez plutôt que vous ne cherchez précisément.

  3. Lisez l'explication en clair

    Chaque entrée précise quand le code est renvoyé, comment le client réagit en général, et la cause la plus fréquente.

  4. Comparez les codes proches

    Suivez les liens « voir aussi » entre les paires piégeuses (401 vs 403, 301 vs 302) pour choisir le bon code dans votre API.

Les classes de codes de statut HTTP

Les cinq classes de codes HTTP et leur signification d'un coup d'œil. Définies par la RFC 9110 et enregistrées dans le registre IANA des codes HTTP.

ClasseSignificationCodes courants
1xx InformationnelRequête reçue, traitement en cours100, 101, 103
2xx SuccèsLa requête a fonctionné200, 201, 204, 206
3xx RedirectionVa voir ailleurs301, 302, 304, 307, 308
4xx Erreur clientQuelque chose cloche dans la requête400, 401, 403, 404, 409, 422, 429
5xx Erreur serveurLe serveur n'a pas réussi à traiter une requête pourtant valide500, 502, 503, 504

Les codes HTTP qu'il faut connaître

200 OK vs 201 Created vs 204 No Content

200 OK

La réponse classique « tout s'est bien passé », avec un corps de réponse.

201 Created

Une nouvelle ressource a été créée suite à la requête — typiquement après un POST.

204 No Content

Succès, mais sans corps. Fréquent après un DELETE ou un PUT qui n'a rien à renvoyer.

Tous les trois sont des codes de succès — la différence porte sur ce que la réponse transporte. 201 doit inclure un en-tête Location qui pointe vers la nouvelle ressource ; 204 est vide par définition.

301 Moved Permanently vs 302 Found

301

Redirection permanente. Les navigateurs et moteurs de recherche s'en souviennent ; l'ancienne URL est de fait morte.

302

Redirection temporaire. Les navigateurs revérifient l'URL d'origine à chaque requête ; les favoris restent sur l'ancienne URL.

Utilisez 301 quand vous avez réellement déplacé une ressource (changement de marque, refonte d'URL). Utilisez 302 pour des redirections de courte durée : tests A/B, redirection après login, page de maintenance.

401 Unauthorized vs 403 Forbidden

401

Vous n'êtes pas authentifié. Le serveur ne sait pas qui vous êtes.

403

Le serveur sait qui vous êtes, mais vous n'avez pas le droit d'accéder à cette ressource.

Petit moyen mnémotechnique : 401 = « je ne sais pas qui tu es », 403 = « je sais qui tu es, et c'est non ».

500 vs 502 vs 503 vs 504

500

Erreur serveur générique — votre code a levé une exception non gérée.

502

Bad gateway — un proxy en amont (CDN, load balancer) n'a pas réussi à joindre le serveur derrière.

503

Service unavailable — le serveur tourne mais il est saturé ou en maintenance.

504

Gateway timeout — un proxy a bien atteint le serveur en amont mais n'a pas reçu de réponse à temps.

Les quatre sont des erreurs serveur, mais elles racontent des histoires très différentes au moment du debug. 500 pointe vers votre appli ; 502 et 504 vers le chemin réseau ; 503 vers la capacité.

Erreurs fréquentes avec les codes de statut

  • Renvoyer 200 OK avec {"error": "..."} dans le corps. Les codes de statut font partie du contrat — utilisez le bon (400, 404, 500) pour que les clients puissent brancher dessus.
  • Utiliser 401 pour des erreurs de permission. 401 concerne l'authentification ; un refus de permission, c'est 403.
  • Renvoyer 200 pour une ressource fraîchement créée au lieu de 201 accompagné d'un en-tête Location.

FAQ sur les codes de statut HTTP

Que veut dire HTTP 404 ?
404 Not Found signifie que le serveur a bien compris la requête, mais qu'aucune ressource n'existe à cette URL. La cause la plus fréquente : un mauvais chemin, une ressource supprimée ou une URL mal tapée.
Quelle est la différence entre 401 et 403 ?
401 Unauthorized veut dire que vous n'êtes pas authentifié — le serveur ne sait pas qui vous êtes. 403 Forbidden veut dire que vous êtes authentifié mais que vous n'avez pas la permission d'accéder à la ressource. Envoyer d'autres identifiants peut résoudre un 401 ; ça ne corrigera pas un 403.
Quelle est la différence entre 301 et 302 ?
301 Moved Permanently est une redirection permanente — navigateurs et moteurs de recherche mettent à jour leurs références. 302 Found est une redirection temporaire — les clients continuent à interroger l'URL d'origine. Utilisez 301 pour un déménagement définitif, 302 pour un détour temporaire.
Que veut dire HTTP 500 ?
500 Internal Server Error est une erreur générique côté serveur, levée la plupart du temps quand une exception non gérée remonte jusqu'en haut. Le client n'a rien fait de mal — c'est votre serveur qui a échoué à traiter une requête pourtant valide.
Faut-il toujours utiliser un code de statut précis ?
Oui. Renvoyer un 200 OK générique pour des erreurs, ou un 500 à toutes les sauces, rend l'API pénible à utiliser. Choisissez le code le plus précis qui colle à la situation — clients, proxys, monitoring et logique de retry s'appuient tous sur le code de statut.
Que veut dire HTTP 429 ?
429 Too Many Requests est renvoyé quand un client a atteint une limite de débit. La réponse devrait inclure un en-tête Retry-After indiquant au client à partir de quand il peut réessayer sans risque.

En savoir plus

Autres outils pour développeurs

Apprendre à coder avec Coddy

COMMENCER