# Liste des codes HTTP

Le protocole de communication informatique HTTP définit une liste de codes HTTP. Ces codes sont des numéros de 3 chiffres. La plupart des codes correspondent chacun à un type d'erreur, quelques-uns correspondent à un type de succès. Ces codes sont envoyés par le serveur HTTP au client HTTP afin de permettre à ce dernier de déterminer automatiquement si une requête a réussi, et sinon de connaître le type d'erreur.
Ces codes d'état ont été successivement définis par la RFC 1945, puis la RFC 2068, puis la RFC 2616, en même temps que d’autres codes d'état, non normalisés mais très utilisés sur le Web. En 2014, ils ont été finalement spécifiés par la RFC 7231.

## Structure des codes

Le premier chiffre est utilisé pour spécifier une des cinq catégories de réponse (informations, succès, redirection, erreur client et erreur serveur).
Les codes les plus courants sont :
* 200 : succès de la requête ;
* 301 et 302 : redirection, respectivement permanente et temporaire ;
* 401 : utilisateur non authentifié ;
* 403 : accès refusé ;
* 404 : ressource non trouvée ;
* 500, 502 et 503 : erreurs serveur ;
* 504 : le serveur n'a pas répondu.
Certains codes ne sont pas encore utilisés, mais sont prévus pour une utilisation future. D'autres codes n'entraînent aucun affichage spécifique pour l’utilisateur, mais sont sous-entendus (par exemple, les codes 200 ou 304, jamais vus par le client car ils concernent la majorité des requêtes réussies).

## Codes d'état

Les codes de la table ci-dessous marqués WebDAV ne sont pas spécifiés par le protocole HTTP mais par le protocole WebDAV qui est une extension de HTTP.

### 1xx - Information

Codes commençant par 1 :
| Code | Message | Apparition | Signification |
| 100 | Continue | | Attente de la suite de la requête. |
| 101 | Switching Protocols | | Acceptation du changement de protocole. |
| 102 | Processing | WebDAV RFC 2518$^,$ | Traitement en cours (évite que le client dépasse le temps d’attente limite). |
| 103 | Early Hints | RFC 8297 | (Expérimental) Dans l'attente de la réponse définitive, le serveur renvoie des liens que le client peut commencer à télécharger. |

### 2xx - Succès

Codes commençant par 2 :
| Code | Message | Apparition | Signification |
| 200 | OK | RFC 1945 | Requête traitée avec succès. La réponse dépendra de la méthode de requête utilisée. |
| 201 | Created | RFC 1945 | Requête traitée avec succès et création d’un document. |
| 202 | Accepted | RFC 1945 | Requête traitée, mais sans garantie de résultat. |
| 203 | Non-Authoritative Information | | Information renvoyée, mais générée par une source non certifiée. |
| 204 | No Content | RFC 1945 | Requête traitée avec succès mais pas d’information à renvoyer. |
| 205 | Reset Content | RFC 2068 | Requête traitée avec succès, la page courante peut être effacée. |
| 206 | Partial Content | RFC 2068 | Une partie seulement de la ressource a été transmise. |
| 207 | Multi-Status | WebDAV | Réponse multiple. |
| 208 | Already Reported | WebDAV | Le document a été envoyé précédemment dans cette collection. |
| 210 | Content Different | WebDAV | La copie de la ressource côté client diffère de celle du serveur (contenu ou propriétés). |
| 226 | IM Used | RFC 3229 | Le serveur a accompli la requête pour la ressource, et la réponse est une représentation du résultat d'une ou plusieurs manipulations d'instances appliquées à l'instance actuelle. |

### 3xx - Redirection

Codes commençant par 3 :
| Code | Message | Apparition | Signification |
| 300 | Multiple Choices | RFC 1945 | L’URI demandée se rapporte à plusieurs ressources. |
| 301 | Moved Permanently | RFC 1945 | Document déplacé de façon permanente. |
| 302 | Found | RFC 1945 | Document déplacé de façon temporaire. |
| 303 | See Other | RFC 2068 | La réponse se trouve à un autre URI et doit être récupérée avec une méthode GET. |
| 304 | Not Modified | RFC 1945 | Document non modifié depuis la dernière requête. |
| 305 | Use Proxy (depuis HTTP/1.1) | RFC 2068 | La requête doit être ré-adressée au proxy. |
| 306 | (inutilisé) | RFC 2616 | La RFC 2616 indique que ce code inutilisé est réservé, car il était utilisé dans une ancienne version de la spécification. Il signifiait « Les requêtes suivantes doivent utiliser le proxy spécifié ». |
| 307 | Temporary Redirect | | La requête doit être redirigée temporairement vers l’URI spécifiée sans changement de méthode. |
| 308 | Permanent Redirect | | La requête doit être redirigée définitivement vers l’URI spécifiée sans changement de méthode. |
| 310 | Too many Redirects | | La requête doit être redirigée de trop nombreuses fois, ou est victime d’une boucle de redirection. |

### 4xx - Erreur du client HTTP

Codes commençant par 4 :
| Code | Message | Apparition | Signification |
| 400 | Bad Request | RFC 1945 | La syntaxe de la requête est erronée. |
| 401 | Unauthorized | RFC 1945 | Une authentification est nécessaire pour accéder à la ressource. |
| 402 | Payment Required | RFC 2068 | Paiement requis pour accéder à la ressource. |
| 403 | Forbidden | RFC 1945 | Le serveur a compris la requête, mais refuse de l'exécuter. Contrairement à l'erreur 401, s'authentifier ne fera aucune différence. Sur les serveurs où l'authentification est requise, cela signifie généralement que l'authentification a été acceptée mais que les droits d'accès ne permettent pas au client d'accéder à la ressource. |
| 404 | Not Found | RFC 1945 | Ressource non trouvée. |
| 405 | Method Not Allowed | RFC 2068 | Méthode de requête non autorisée. |
| 406 | Not Acceptable | RFC 2068 | La ressource demandée n'est pas disponible dans un format qui respecterait les en-têtes « Accept » de la requête. |
| 407 | Proxy Authentication Required | RFC 2068 | Accès à la ressource autorisé par identification avec le proxy. |
| 408 | Request Time-out | RFC 2068 | Temps d’attente d’une requête du client, écoulé côté serveur. D'après les spécifications HTTP : « Le client n'a pas produit de requête dans le délai que le serveur était prêt à attendre. Le client PEUT répéter la demande sans modifications à tout moment ultérieur ». |
| 409 | Conflict | RFC 2068 | La requête ne peut être traitée à la suite d'un conflit avec l'état actuel du serveur. |
| 410 | Gone | RFC 2068 | La ressource n'est plus disponible et aucune adresse de redirection n’est connue. |
| 411 | Length Required | RFC 2068 | La longueur de la requête n’a pas été précisée. |
| 412 | Precondition Failed | RFC 2068 | Préconditions envoyées par la requête non vérifiées. |
| 413 | Request Entity Too Large | RFC 2068 | Traitement abandonné dû à une requête trop importante. |
| 414 | Request-URI Too Long | RFC 2068 | URI trop longue. |
| 415 | Unsupported Media Type | RFC 2068 | Format de requête non supporté pour une méthode et une ressource données. |
| 416 | Requested range unsatisfiable | | Champs d’en-tête de requête « range » incorrect. |
| 417 | Expectation failed | | Comportement attendu et défini dans l’en-tête de la requête insatisfaisante. |
| 418 | I’m a teapot | RFC 2324 | « Je suis une théière » : Ce code est défini dans la RFC 2324 datée du 1er avril 1998, Hyper Text Coffee Pot Control Protocol. |
| 419 | Page expired | | Ressource expirée |
| 421 | Bad mapping / Misdirected Request | | La requête a été envoyée à un serveur qui n'est pas capable de produire une réponse (par exemple, car une connexion a été réutilisée). |
| 422 | Unprocessable entity | WebDAV | L’entité fournie avec la requête est incompréhensible ou incomplète. |
| 423 | Locked | WebDAV | L’opération ne peut avoir lieu car la ressource est verrouillée. |
| 424 | Method failure | WebDAV | Une méthode de la transaction a échoué. |
| 425 | Too Early | RFC 8470 | Le serveur ne peut traiter la demande car elle risque d'être rejouée. |
| 426 | Upgrade Required | RFC 2817 | Le client devrait changer de protocole, par exemple au profit de TLS/1.0. |
| 427 | Invalid digital signature | Microsoft | La signature numérique du document est non-valide. |
| 428 | Precondition Required | RFC 6585 | La requête doit être conditionnelle. |
| 429 | Too Many Requests | RFC 6585 | Le client a émis trop de requêtes dans un délai donné. |
| 431 | Request Header Fields Too Large | RFC 6585 | Les entêtes HTTP émises dépassent la taille maximale admise par le serveur. |
| 449 | Retry With | Microsoft | La requête devrait être renvoyée après avoir effectué une action. |
| 450 | Blocked by Windows Parental Controls | Microsoft | Cette erreur est produite lorsque les outils de contrôle parental de Microsoft Windows sont activés et bloquent l’accès à la page. |
| 451 | Unavailable For Legal Reasons | RFC 7725 | La ressource demandée est inaccessible pour des raisons d'ordre légal. |
| 456 | Unrecoverable Error | WebDAV | Erreur irrécupérable. |
Codes 4xx étendus du serveur Nginx :
| Code | Message | Apparition | Signification |
| 444 | No Response | Nginx | Indique que le serveur n'a retourné aucune information vers le client et a fermé la connexion. |
| 495 | SSL Certificate Error | Nginx | Une extension de l'erreur 400 Bad Request, utilisée lorsque le client a fourni un certificat invalide. |
| 496 | SSL Certificate Required | Nginx | Une extension de l'erreur 400 Bad Request, utilisée lorsqu'un certificat client requis n'est pas fourni. |
| 497 | HTTP Request Sent to HTTPS Port | Nginx | Une extension de l'erreur 400 Bad Request, utilisée lorsque le client envoie une requête HTTP vers le port 443 normalement destiné aux requêtes HTTPS. |
| 498 | Token expired/invalid | Nginx | Le jeton a expiré ou est invalide. |
| 499 | Client Closed Request | Nginx | Le client a fermé la connexion avant de recevoir la réponse. Cette erreur se produit quand le traitement est trop long côté serveur. |

### 5xx - Erreur du serveur / du serveur d'application

Codes commençant par 5 :
| Code | Message | Apparition | Signification |
| 500 | Internal Server Error | RFC 1945 | Erreur interne du serveur. |
| 501 | Not Implemented | RFC 1945 | Fonctionnalité réclamée non supportée par le serveur. |
| 502 | Bad Gateway ou Proxy Error | RFC 1945 | En agissant en tant que serveur proxy ou passerelle, le serveur a reçu une réponse invalide depuis le serveur distant. |
| 503 | Service Unavailable | RFC 1945 | Service temporairement indisponible ou en maintenance. |
| 504 | Gateway Time-out | RFC 2068 | Temps d’attente d’une réponse d’un serveur à un serveur intermédiaire écoulé. |
| 505 | HTTP Version not supported | RFC 2068 | Version HTTP non gérée par le serveur. |
| 506 | Variant Also Negotiates | RFC 2295 | Erreur de négociation. Transparent content negociation. |
| 507 | Insufficient storage | WebDAV | Espace insuffisant pour modifier les propriétés ou construire la collection. |
| 508 | Loop detected | WebDAV | Boucle dans une mise en relation de ressources (RFC 5842). |
| 509 | Bandwidth Limit Exceeded | | Utilisé par de nombreux serveurs pour indiquer un dépassement de quota. |
| 510 | Not extended | RFC 2774 | La requête ne respecte pas la politique d'accès aux ressources HTTP étendues. |
| 511 | Network authentication required | RFC 6585 | Le client doit s'authentifier pour accéder au réseau. Utilisé par les portails captifs pour rediriger les clients vers la page d'authentification. |
Codes 5xx étendus du mandataire Cloudflare :
| Code | Message | Apparition | Signification |
| 520 | Unknown Error | Cloudflare | Réponse générique lorsque le serveur d'origine retourne un résultat imprévu. |
| 521 | Web Server Is Down | Cloudflare | Le serveur a refusé la connexion depuis Cloudflare. |
| 522 | Connection Timed Out | Cloudflare | Cloudflare n'a pas eu de retour avec le serveur d'origine dans les temps. |
| 523 | Origin Is Unreachable | Cloudflare | Cloudflare n'a pas réussi à joindre le serveur d'origine. Cela peut se produire en cas d'échec de résolution de nom de serveur DNS. |
| 524 | A Timeout Occurred | Cloudflare | Cloudflare a établi une connexion TCP avec le serveur d'origine mais n'a pas reçu de réponse HTTP avant l'expiration du délai de connexion. |
| 525 | SSL Handshake Failed | Cloudflare | Cloudflare n'a pas pu négocier un SSL/TLS handshake avec le serveur d'origine. |
| 526 | Invalid SSL Certificate | Cloudflare | Cloudflare n'a pas pu valider le certificat SSL présenté par le serveur d'origine. |
| 527 | Railgun Error | Cloudflare | La requête a dépassé le délai de connexion ou a échoué après que la connexion WAN a été établie. |