Codes de réponse HTTP

Les codes de statut de réponse HTTP indiquent si une requête HTTP a été exécutée avec succès ou non. Les réponses sont regroupées en cinq classes:

  1. Les réponses informatives (100 - 199),
  2. Les réponses de succès (200 - 299),
  3. Les redirections (300 - 399),
  4. Les erreurs du client (400 - 499),
  5. Les erreurs du serveur (500 - 599).

Réponses informatives

100 Continue

Cette réponse intermédiaire indique que tout est OK pour le moment et que le client peut continuer sa requête ou l'ignorer si celle-ci est déjà finie.

101 Switching Protocol

Ce code est envoyé en réponse à un en-tête de requête Upgrade (en-US) de la part du client et indique le protocole sur lequel passe le serveur.

103 Processing (WebDAV)

Ce code indique que le serveur a reçu et traite la requête, mais qu'aucune réponse n'est disponible pour le moment.

Réponses de succès

200 OK

La requête a réussi. Le signification du succès peut varier selon la méthode HTTP : GET : La ressource a été récupérée et est retransmise dans le corps du message. HEAD : Les en-têtes d'entité sont dans le corps du message. POST : La ressource décrivant le résultat de l'action est transmise dans le corps du message. TRACE : Le corps du message contient le message de requête tel que reçu par le serveur

201 Created

La requête a réussi et une nouvelle ressource a été créée en guise de résultat. Il s'agit typiquement de la réponse envoyée après une requête PUT.

202 Accepted

La requête a été reçue mais n'a pas encore été traitée. C'est une réponse évasive, ce qui signifie qu'il n'y a aucun moyen en HTTP d'envoyer une réponse asynchrone ultérieure indiquant le résultat issu du traitement de la requête. Elle est destinée aux cas où un autre processus ou serveur gère la requête, et peut être utile pour faire du traitement par lots.

203 Non-Authoritative Information

Ce code de réponse signifie que l'ensemble de méta-informations renvoyé n'est pas exactement l'ensemble disponible sur le serveur d'origine, mais plutôt un ensemble collecté à partir d'une copie locale ou tierce. À l'exception de cette condition, une réponse 200 OK est préférable.

204 No Content

Il n'y a pas de contenu à envoyer pour cette requête, mais les en-têtes peuvent être utiles. L'agent utilisateur peut mettre à jour ses en-têtes en cache pour cette ressource en les remplaçant par les nouveaux.

205 Reset Content

Ce code de réponse est envoyé après avoir traité une requête indiquant à l'agent utilisateur qu'il peut réinitialiser la vue du document qui a envoyé la requête.

206 Partial Content

Ce code de réponse est utilisé en réaction à l'en-tête Range envoyé par le client pour séparer le téléchargement en plusieurs flux.

207 Multi-Status (WebDAV)

Une réponse multi-statut donne des informations sur des ressources multiples dans les situations où les codes de statut multiples sont appropriés.

208 Multi-Status (WebDAV)

Utilisé au sein d'un DAV : élément de réponse propstat pour éviter d'énumérer à maintes reprises les membres internes de bindings multiples vers la même collection.

226 IM Used (HTTP Delta encoding)

Le serveur a exécuté une requête GET pour la ressource, et la réponse est une représentation du résultat d'une ou plusieurs manipulations d'instance appliquées à l'instance courante.

Messages de redirection

300 Multiple Choice

La requête a plusieurs réponses possibles. L'agent utilisateur ou l'utilisateur doit choisir l'une d'entre elles. Il n'y a pas de manière standard pour choisir l'une de ces réponses.

301 Moved Permanently

Ce code de réponse signifie que l'URI de la ressource demandée a été modifiée. Une nouvelle URI sera probablement donnée dans la réponse.

302 Found

Ce code de réponse indique que l'URI de la ressource demandée a été modifiée temporairement. De nouveaux changements dans l'URI pourront être effectués ultérieurement. Par conséquent, cette même URI devrait être utilisée par le client pour les requêtes futures.

303 See Other

Le serveur a envoyé cette réponse pour diriger le client vers la ressource demandée via une autre URI en utilisant une requête GET.

304 Not Modified

Ce code est utilisé pour des raisons de cache. Il indique au client que la réponse n'a pas été modifiée. De fait, le client peut continuer à utiliser la même version de la réponse, mise en cache.

305 Use Proxy

A été défini dans une version antérieure de la spécification HTTP pour indiquer qu'une réponse sollicitée doit transiter par un proxy. Ce code est aujourd'hui périmé pour des raisons de sécurité relatives à la configuration d'un proxy.

306 unused

Ce code de réponse n'est plus en service, son usage est actuellement réservé. Il était utilisé dans une version précédente de la spécification HTTP 1.1.

307 Temporary Redirect

Le serveur a envoyé cette réponse pour rediriger le client afin d'obtenir la ressource demandée via une autre URI, en utilisant la même méthode que précédemment. Ce code a la même sémantique que le code 302 Found, à l'exception près que l'agent utilisateur ne doit pas changer la méthode HTTP utilisée : si POST était utilisé dans la première requête, alors POST doit être utilisé dans la seconde.

308 Permanent Redirect

Cela signifie que la ressource a été déplacée de manière permante vers une autre URI, spécifiée dans l'en-tête de réponse HTTP Location:. Ce code a la même sémantique que le code 301 Moved Permanently, à l'exception près que l'agent utilisateur ne doit pas changer la méthode HTTP utilisée : si POST était utilisé dans la première requête, alors POST doit être utilisé dans la seconde.

Réponses d'erreur côté client

400 Bad Request

Cette réponse indique que le serveur n'a pas pu comprendre la requête à cause d'une syntaxe invalide.

401 Unauthorized

Une identification est nécessaire pour obtenir la réponse demandée. Ceci est similaire au code 403, mais dans ce cas, l'identification est possible.

402 Payment Required

Ce code de réponse est réservé à une utilisation future. Le but initial justifiant la création de ce code était l'utilisation de systèmes de paiement numérique. Cependant, il n'est pas utilisé actuellement.

403 Forbidden

Le client n'a pas les droits d'accès au contenu, donc le serveur refuse de donner la véritable réponse.

404 Not Found

Le serveur n'a pas trouvé la ressource demandée. Ce code de réponse est principalement connu pour son apparition fréquente sur le web.

405 Method Not Allowed

La méthode de requête est connue du serveur mais a été désactivée et ne peut pas être utilisée. Les deux méthodes obligatoires, GET et HEAD, ne doivent jamais être désactivées et ne doivent pas retourner ce code d'erreur.

406 Not Acceptable

Cette réponse est envoyée quand le serveur web, après une négotiation de contenu géré par le serveur, ne trouve rien qui satisfasse les critères donnés par l'agent utilisateur.

407 Proxy Authentication Required

Similaire au code 401, sauf que l'identification doit être faite par un proxy.

408 Request Timeout

Cette réponse est envoyée via une connexion en attente par certains serveurs, même sans qu'il y ait de requête préalable de la part du client. Cela signifie que le serveur aimerait fermer cette connexion inutilisée. Cette réponse est bien plus utilisée depuis que certains navigateurs, comme Chrome, Firefox 27+ ou IE9, utilisent des mécanismes de préconnexion HTTP pour accélerer la navigation. Notez aussi que certains serveurs ferment simplement la connexion sans même envoyer ce message.

409 Conflict

Cette réponse est envoyée quand une requête entre en conflit avec l'état actuel du serveur.

410 Gone

Cette réponse est envoyée quand le contenu demandé est supprimé du serveur.

411 Length Required

Le serveur a rejeté la requête car le champ d'en-tête Content-Length n'est pas défini et le serveur l'impose.

412 Precondition Failed

Le client a indiqué des préconditions dans ses en-têtes que le serveur ne remplit pas.

413 Payload Too Large

L'entité demandée est plus grosse que la limite définie par le serveur; le serveur peut fermer la connexion ou retourner un champ d'en-tête Retry-After.

414 URI Too Long

L'URI interrogé par le client est plus long que ce que le serveur est en mesure d'interpréter.

415 Unsupported Media Type

Le format média des données demandées n'est pas supporté par le serveur, donc le serveur rejette la requête.

416 Requested Range Not Satisfiable

La plage spécifiée par le champ d'en-tête Range de la requête ne peut pas être satisfaite ; il est possible que la plage excède la taille des données provenant de l'URI ciblé.

417 Expectation Failed

Ce code de réponse signifie que les attentes indiquées par le champ d'en-tête de requête Expect n'ont pas pu être satisfaites par le serveur.

418 I'm a teapot

Le serveur refuse de brasser du café avec une théière.

421 Misdirected Request

La requête a été envoyée à un serveur incapable de produire une réponse. Ce code peut être envoyé par un serveur qui n'a pas été configuré pour produire des réponses sujettes à la combinaison de schémas et d'identités incluse dans l'URI de la requête.

422 Unprocessable Entity (WebDAV)

La requête a bien été constituée mais n'a pas pu être traitée à cause d'erreurs sémantiques.

423 Locked (WebDAV)

La ressource qui est en train d'être consultée est verrouillée.

424 Failed Dependency (WebDAV)

La requête a échoué à cause de l'échec d'une requête précédente.

426 Upgrade Required

Le serveur refuse de traiter la requête en utilisant le protocole actuel mais peut accepter de le faire si le client opte pour un autre protocole. Le serveur doit envoyer un champ Upgrade dans l'en-tête de la réponse 426 pour indiquer le(s) protocole(s) demandé(s) (Section 6.7 de [RFC7230]).

428 Precondition Required

Le serveur d'origine impose que la requête soit conditionnelle. Ceci est prévu pour empêcher le problème de 'perte de mise à jour', où un client récupère l'état d'une ressource avec GET, le modifie, et le renvoie au serveur avec PUT pendant qu'un tiers modifie l'état du serveur, ce qui conduit à un conflit.

429 Too Many Requests

L'utilisateur a émis trop de requêtes dans un laps temps donné.

431 Request Header Fields Too Large

Le serveur n'est pas disposé à traiter la requête car les champs d'en-tête sont trop longs. La requête PEUT être renvoyée après avoir réduit la taille des en-têtes.

451 Unavailable For Legal Reasons

L'utilisateur tente d'accéder à une ressource illégale, telle qu'une page censurée par un gouvernement.

Réponses d'erreur côté serveur

500 Internal Server Error

Le serveur a rencontré une situation qu'il ne sait pas traiter.

501 Not Implemented

La méthode de requête n'est pas supportée par le serveur et ne peut pas être traitée. Les seules méthodes que les serveurs sont tenus de supporter (et donc pour lesquelles ils ne peuvent pas renvoyer ce code) sont GET et HEAD.

502 Bad Gateway

Cette réponse d'erreur signifie que le serveur, alors qu'il fonctionnait en tant que passerelle pour recevoir une reponse nécessaire pour traiter la requête, a reçu une réponse invalide.

503 Service Unavailable

Le serveur n'est pas prêt pour traiter la requête. Les causes les plus communes sont que le serveur est éteint pour maintenance ou qu'il est surchargé. Notez qu'avec cette réponse, une page ergonomique peut expliquer le problème. Ces réponses doivent être utilisées temporairement et le champ d'en-tête Retry-After doit, dans la mesure du possible, contenir une estimation de l'heure de reprise du service. Le webmestre doit aussi faire attention aux en-têtes de mise en cache qui sont envoyés avec cette réponse (qui ne doivent typiquement pas être mis en cache).

504 Gateway Timeout

Cette réponse d'erreur est renvoyée lorsque le serveur sert de passerelle et ne peut pas donner de réponse dans les temps.

505 HTTP Version Not Supported

La version de HTTP utilisée dans la requête n'est pas supportée par le serveur.

506 Variant Also Negotiates

Le serveur a une erreur de configuration interne : la négociation de contenu transparente pour la requête aboutit à une dépendance circulaire.

507 Insufficient Storage

Le serveur a une erreur de configuration interne : la ressource sélectionnée est configurée pour participer elle-même à une négociation de contenu transparente, et n'est par conséquent pas un nœud terminal valable dans le processus de négociation.

508 Loop Detected (WebDAV)

Le serveur a détecté une boucle infinie en traitant la requête.

510 Not Extended

Des extensions supplémentaires sont requises afin que le serveur puisse satisfaire la requête.

511 Network Authentication Required

Le code de statut 511 indique que le client doit s'authentifier afin de pouvoir accéder au réseau.

Voir aussi