Codes de statut HTTP
Tous les codes de statut HTTP expliqués simplement : ce qu’ils signifient, leurs causes courantes, comment les corriger, un exemple de réponse et le RFC qui les définit.
70 codes de statut
1xx Information
Réponses provisoires : la requête a été reçue et le traitement continue.
100 Continue Continuer Le serveur a reçu les en-têtes de la requête et le client peut envoyer le corps. C'est une réponse provisoire envoyée avant le statut final. 101 Switching Protocols Changement de protocole Le serveur accepte de passer au protocole demandé par le client dans l'en-tête Upgrade, le plus souvent WebSocket. Après cette réponse, la connexion utilise le nouveau protocole. 102 Processing Traitement en cours Réponse provisoire WebDAV indiquant que le serveur travaille encore sur une longue requête, pour que le client n'abandonne pas. Elle est obsolète et rarement envoyée aujourd'hui. 103 Early Hints Indications préliminaires Réponse provisoire qui envoie des en-têtes Link en avance pour que le navigateur précharge CSS et polices ou se préconnecte à d'autres origines pendant que le serveur construit encore la page finale.
2xx Succès
La requête a été reçue, comprise et acceptée.
200 OK OK La requête a réussi. Pour un GET, le corps contient la ressource ; pour un POST, il contient le résultat de l'action. 201 Created Créé La requête a réussi et a créé une nouvelle ressource. L'en-tête Location pointe généralement vers elle. 202 Accepted Accepté La requête a été acceptée pour traitement, mais le traitement n'est pas terminé. Le résultat est inconnu au moment de la réponse. 203 Non-Authoritative Information Information non certifiée La requête a réussi, mais un proxy de transformation a modifié le contenu de la réponse 200 de l'origine. 204 No Content Pas de contenu La requête a réussi et il n'y a pas de corps à renvoyer. Les en-têtes peuvent encore porter des métadonnées comme un nouvel ETag. 205 Reset Content Réinitialiser le contenu La requête a réussi et le client doit réinitialiser la vue du document, par exemple vider le formulaire envoyé. Aucun corps n'est envoyé. 206 Partial Content Contenu partiel Le serveur ne renvoie qu'une partie de la ressource, comme demandé par un en-tête Range. Content-Range indique quels octets sont inclus. 207 Multi-Status Multi-statut Réponse WebDAV dont le corps XML contient un statut distinct pour chacune des ressources concernées par une même requête. 208 Already Reported Déjà signalé Utilisé dans un corps WebDAV 207 pour indiquer qu'une ressource a déjà été listée plus haut dans la réponse, afin d'éviter les doublons quand des liaisons créent des boucles. 226 IM Used IM utilisé Le serveur a répondu à un GET en appliquant une ou plusieurs manipulations d'instance (codage delta) : le corps est donc une différence, pas la ressource complète.
3xx Redirection
Le client doit faire une étape de plus, en général suivre une nouvelle URL.
300 Multiple Choices Choix multiples La ressource a plusieurs représentations (langue, format) et le client ou l'utilisateur doit en choisir une. Le serveur peut suggérer celle qu'il préfère via Location. 301 Moved Permanently Déplacé définitivement La ressource a été déplacée définitivement vers l'URL indiquée dans Location. Les clients et les moteurs de recherche doivent désormais utiliser la nouvelle URL. 302 Found Trouvé La ressource se trouve temporairement à une autre URL. Les clients doivent continuer à utiliser l'URL d'origine pour les prochaines requêtes. 303 See Other Voir ailleurs Le serveur demande au client de récupérer une autre URL avec GET, généralement pour afficher le résultat d'un POST. 304 Not Modified Non modifié La copie en cache du client est toujours valide, donc le serveur n'envoie pas de corps. Il répond à une requête conditionnelle avec If-None-Match ou If-Modified-Since. 305 Use Proxy Utiliser le proxy Obsolète. Il demandait autrefois au client de répéter la requête via le proxy indiqué dans Location. Les navigateurs l'ignorent pour des raisons de sécurité. 307 Temporary Redirect Redirection temporaire La ressource se trouve temporairement à une autre URL, et le client doit y répéter la requête avec la même méthode et le même corps. 308 Permanent Redirect Redirection permanente La ressource a été déplacée définitivement, et les clients doivent répéter la requête à la nouvelle URL avec la même méthode et le même corps.
4xx Erreurs du client
La requête comporte un problème que le client doit corriger.
400 Bad Request Requête incorrecte Le serveur ne peut pas traiter la requête car elle est mal formée : syntaxe invalide, structure incorrecte ou valeurs qu'il ne sait pas interpréter. 401 Unauthorized Non autorisé La requête ne contient pas d'identifiants d'authentification valides. Malgré son nom, il signifie non authentifié : connectez-vous ou envoyez un jeton valide. 402 Payment Required Paiement requis Réservé pour un usage futur, mais en pratique les services le renvoient quand un paiement ou une offre payante est nécessaire pour continuer. 403 Forbidden Interdit Le serveur a compris la requête mais refuse de l'autoriser. Se reconnecter n'y changera rien tant que les permissions ne changent pas. 404 Not Found Introuvable Le serveur ne trouve rien à l'URL demandée. Il n'indique pas si la ressource a existé ou si elle reviendra. 405 Method Not Allowed Méthode non autorisée L'URL existe mais ne prend pas en charge la méthode HTTP utilisée. L'en-tête Allow liste les méthodes qui fonctionnent. 406 Not Acceptable Non acceptable Le serveur ne peut produire de réponse dans aucun des formats autorisés par les en-têtes Accept du client. 407 Proxy Authentication Required Authentification proxy requise Un proxy entre le client et le serveur exige une authentification avant de transmettre la requête. 408 Request Timeout Délai de requête dépassé Le serveur a fermé la connexion car le client n'a pas envoyé une requête complète à temps. 409 Conflict Conflit La requête entre en conflit avec l'état actuel de la ressource, par exemple un doublon ou une modification simultanée. 410 Gone Disparu La ressource a définitivement disparu et aucune nouvelle adresse n'est connue. Contrairement à 404, le serveur l'affirme délibérément. 411 Length Required Longueur requise Le serveur exige un en-tête Content-Length et la requête n'en contenait pas. 412 Precondition Failed Échec de la précondition Une précondition des en-têtes, comme If-Match ou If-Unmodified-Since, s'est révélée fausse, donc le serveur n'a pas appliqué la requête. 413 Content Too Large Contenu trop volumineux Le corps de la requête dépasse ce que le serveur veut ou peut traiter. Autrefois appelé Payload Too Large. 414 URI Too Long URI trop longue L'URL de la requête est plus longue que ce que le serveur accepte d'interpréter. 415 Unsupported Media Type Type de média non pris en charge Le serveur refuse la requête car le type de média du corps (Content-Type) ou son encodage n'est pas pris en charge. 416 Range Not Satisfiable Plage non satisfaisable L'en-tête Range demande des octets au-delà de la taille de la ressource. 417 Expectation Failed Échec de l'attente Le serveur ne peut pas satisfaire l'exigence de l'en-tête Expect de la requête, généralement Expect: 100-continue. 418 I'm a teapot Je suis une théière Un poisson d'avril issu du Hyper Text Coffee Pot Control Protocol : le serveur est une théière et refuse de faire du café. Certains sites l'utilisent pour plaisanter ou pour bloquer des bots. 421 Misdirected Request Requête mal dirigée La requête a atteint un serveur qui n'est pas configuré pour répondre pour cet hôte, souvent parce qu'une connexion HTTP/2 a été réutilisée pour un autre domaine. 422 Unprocessable Content Contenu non traitable La requête est bien formée mais contient des erreurs sémantiques, donc le serveur ne peut pas la traiter. Autrefois Unprocessable Entity. 423 Locked Verrouillé WebDAV : la ressource est verrouillée, la méthode ne peut donc pas être appliquée. 424 Failed Dependency Échec de dépendance WebDAV : l'action a échoué parce qu'elle dépendait d'une autre action de la même requête qui a échoué. 425 Too Early Trop tôt Le serveur refuse de traiter une requête envoyée en données précoces TLS 1.3 (0-RTT) parce qu'elle pourrait être rejouée. 426 Upgrade Required Mise à niveau requise Le serveur refuse la requête avec le protocole actuel et exige que le client passe, par exemple, à TLS ou HTTP/2, comme indiqué dans l'en-tête Upgrade. 428 Precondition Required Précondition requise Le serveur exige que la requête soit conditionnelle (If-Match, etc.) pour éviter les mises à jour perdues. 429 Too Many Requests Trop de requêtes Le client a envoyé trop de requêtes dans un laps de temps donné (limitation de débit). Retry-After peut indiquer combien de temps attendre. 431 Request Header Fields Too Large Champs d'en-tête trop volumineux Les en-têtes de la requête sont trop volumineux, qu'il s'agisse d'un seul en-tête ou de l'ensemble. 451 Unavailable For Legal Reasons Indisponible pour raisons légales Le serveur ne peut pas fournir la ressource pour des raisons légales, comme une décision de justice ou une censure gouvernementale. Le numéro fait référence à Fahrenheit 451. 499 Client Closed Request (Non standard) Requête fermée par le client nginx journalise 499 quand le client ferme la connexion avant que le serveur n'envoie de réponse. Le client ne voit jamais ce code.
5xx Erreurs du serveur
Le serveur n’a pas pu traiter une requête valide.
500 Internal Server Error Erreur interne du serveur Le serveur a rencontré une condition inattendue et n'a pas pu terminer la requête. C'est le code générique des erreurs côté serveur. 501 Not Implemented Non implémenté Le serveur ne prend pas en charge la fonctionnalité requise, généralement la méthode de requête elle-même. 502 Bad Gateway Mauvaise passerelle Une passerelle ou un proxy a reçu une réponse invalide du serveur amont auquel il a transmis la requête. 503 Service Unavailable Service indisponible Le serveur ne peut temporairement pas traiter la requête, à cause d'une surcharge ou d'une maintenance. Retry-After peut indiquer quand réessayer. 504 Gateway Timeout Délai de passerelle dépassé Une passerelle ou un proxy n'a pas reçu à temps la réponse du serveur amont. 505 HTTP Version Not Supported Version HTTP non prise en charge Le serveur ne prend pas en charge la version de HTTP utilisée dans la requête. 506 Variant Also Negotiates La variante négocie aussi La négociation de contenu transparente est mal configurée : la variante choisie est elle-même configurée pour négocier, ce qui crée une boucle. 507 Insufficient Storage Espace de stockage insuffisant Le serveur ne peut pas stocker la représentation nécessaire pour terminer la requête (espace disque ou quota épuisé). Issu de WebDAV. 508 Loop Detected Boucle détectée Le serveur a détecté une boucle infinie en traitant une requête avec Depth: infinity (WebDAV). Certains hébergeurs l'utilisent aussi pour signaler des limites de ressources. 510 Not Extended Non étendu Des extensions supplémentaires sont nécessaires pour que le serveur traite la requête (HTTP Extension Framework). Ce cadre est aujourd'hui historique. 511 Network Authentication Required Authentification réseau requise Le client doit s'authentifier pour accéder au réseau, généralement sur un portail captif (Wi-Fi d'hôtel ou d'aéroport). 520 Web Server Returned an Unknown Error (Non standard) Erreur inconnue Spécifique à Cloudflare : le serveur d'origine a renvoyé une réponse vide, inconnue ou inattendue. 521 Web Server Is Down (Non standard) Serveur web hors service Spécifique à Cloudflare : le serveur d'origine a refusé la connexion. 522 Connection Timed Out (Non standard) Délai de connexion dépassé Spécifique à Cloudflare : la connexion TCP vers l'origine a expiré. 523 Origin Is Unreachable (Non standard) Origine injoignable Spécifique à Cloudflare : Cloudflare ne peut pas joindre l'origine, généralement à cause de problèmes DNS ou de routage. 524 A Timeout Occurred (Non standard) Délai dépassé Spécifique à Cloudflare : la connexion à l'origine a été établie, mais l'origine n'a pas envoyé de réponse HTTP à temps (100 secondes par défaut). 525 SSL Handshake Failed (Non standard) Échec de la poignée de main SSL Spécifique à Cloudflare : la poignée de main TLS entre Cloudflare et l'origine a échoué. 526 Invalid SSL Certificate (Non standard) Certificat SSL invalide Spécifique à Cloudflare : en mode SSL Full (strict), le certificat de l'origine est invalide, expiré, auto-signé ou ne correspond pas au nom d'hôte.