Lorsque l'on reçoit une réponse HTTP, cette dernière contient de nombreuses informations (dont beaucoup sont similaires à une requête), mais l'une de ses données la plus importante est le code de statut http.

Aussi appelé code de réponse ou code de retour.

Ce code, associé à un statut (un message sous forme de texte) et indissociable de ce dernier, va nous donner deux informations très précises :

  • Ce qu'il s'est passé, ou non, sur le serveur
  • Ce que contient le corps de la réponse HTTP

Si le code indique un succès, on sait que le serveur a pu faire son travail correctement et nous retourner les données attendues.

Tandis que si l'on reçoit un code d'erreur, on va savoir pourquoi la requête n'a pas pu s'exécuter correctement, et que l'on pourra trouver plus d'informations dans le corps de la réponse.

Pour bien les distinguer, les codes HTTP sont séparés en 5 grandes familles, dont chacune est représentée par le premier chiffre du code.

Code 1xx - Informations

100 - Continue

Dans le cadre d'une requête classique, on privilégiera plutôt les codes 200 ou 201 pour indiquer un succès, mais parfois le code 100 permet de dire que la requête n'a pas été rejetée et qu'elle peut continuer, sans indiquer de réel succès.

En pratique, ce code peut par exemple être utilisé lors de l'envoi d'un fichier très lourd au serveur pour indiquer au client que le serveur accepte le fichier, sans savoir si l'upload se passera sans encombre.

Code 2xx - Succès

200 - Ok

Indique le succès de la requête, le corps de la réponse contiendra alors la ressource demandée ou le résultat de l'opération effectuée. On réserve ce statut pour les opérations que l'on appelle "idempotentes".

Si le concept d'idempotence vous est inconnu, je vous invite à lire mon article qui y est consacré.

201 - Created

Lorsque l'opération effectuée à créé une ressource sur le serveur (ou dans la base de données), on utilisera alors plutôt le code 201 à la place du code 200.

Code 3xx - Redirection

Changer l'adresse d'une ressource numérique est beaucoup plus simple que de changer l'adresse d'une habitation, il faut donc une méthode pour indiquer facilement le nouvel emplacement de cette ressource.

Les codes 3xx sont justement fait pour ça, et ils peuvent d'ailleurs eux-mêmes renvoyer vers un autre code 3xx si la ressource a encore changé de place.

301 - Moved Permanently

La redirection 301 signifie que la ressource a été déplacée de manière permanente. Grâce à la nouvelle URL présente dans l'en-tête "Location", les navigateurs et les moteurs de recherches redirigent automatiquement l'utilisateur vers la nouvelle destination.

En terme de SEO, la redirection permanante permet de garder le référencement naturel de la page à son ancienne URL.

302 - Found

Équivalent à une redirection temporaire.

Contrairement à une redirection permanente (301), la redirection temporaire ne redirige pas le référencement naturel, car l'opération doit être limitée dans le temps.

304 - Not modified

Indique que le contenu de la réponse n'a pas changé depuis la dernière requête, et que le client peut utiliser la version de la ressource présente dans son cache.

Code 4xx - Erreur client

Même lorsque votre serveur fonctionne à la perfection, il arrive que certaines requêtes utilisateurs ne parviennent pas à s'exécuter jusqu'au bout pour diverses raisons.

Cela peut venir d'une erreur de saisie, d'une tentative d'accès à des données privées, à des données qui n'existent plus, etc...

400 - Bad Request

Ce code fait référence à la syntaxe et au contenu de la requête qui ne permet pas au serveur d'effectuer l'opération voulue.

Un exemple basique de l'utilisation de ce code est l'envoi d'un formulaire incomplet, les informations manquantes rendent le traitement impossible.

401 - Unauthorized

Non autorisé, ou plutôt synonyme de "non authentifié", ce code indique que le client doit fournir ses informations d'identification afin que le serveur puisse retourner la réponse attendue.

403 - Forbidden

Indique qu'une ressource est inaccessible à un utilisateur même lorsque ce dernier est authentifié.

404 - Not Found

Sans doute le seul code HTTP a être rentré dans la culture populaire, le code 404 indique que la ressource situé à l'URI demandée n'existe pas (ou plus).

À noter qu'il est important de proposer une page spécifique pour cette erreur, comme expliqué dans l'un de mes précédents articles.

409 - Conflict

Ce code indique que la requête rentre en conflit avec l'état actuel du serveur.

En pratique cela peut indiquer qu'une ressource que le client essaye de créer existe déjà sur le serveur.

Code 5xx - Erreur serveur

Lorsque la requête est correcte mais que le serveur n'est pas capable de la traiter, alors ce dernier renvoie un code d'erreur serveur.

C'est la seule catégorie qui, dans le meilleur des mondes, ne devrait  jamais être envoyée, mais qui dans la réalité est indispensable !

500 - Internal Server Error

Le code 500 indique que la reqûete n'a pas pu être traitée par le serveur car il a rencontré une situation inattendue.

C'est en général l'erreur par défaut renvoyé par le serveur lorsque quelque chose s'est mal passé sans que l'on en connaisse encore la cause.

503 - Service Unavailable

Ce code est renvoyé lorsque le serveur n'est pas accessible et n'est pas en capacité de répondre à la requête, à cause d'un bug, d'une maintenance ou d'une surcharge utilisateur.

En bonus

418 - I'm a teapot

Issu d'un poisson d'Avril, le code de statut 418 indique que le serveur refuse de servir du café, car c'est désormais une théière.

Bien que parti d'une plaisanterie, le code 418 est réservé est implémenté dans de nombreuses implémentations de serveurs web comme pour se souvenir que derrière chaque système informatique, il y a le travail de nombreux être humains.

Pour lutter contre la conservation de ce code, une initiative appelée save418 a été lancée et a largement remporté le soutien populaire !

Les autres codes

Il existe de nombreux autres codes de statut HTTP qu'il est intéressant de découvrir, pour cela je vous invite à vous rendre sur la documentation de Mozilla !

J'espère que cet article vous aura été utile, et à bientôt sur le blog !

Les articles les plus populaires du blog

Envie de continuer à lire des articles autour du développement web (entre autres) ? Voici la sélection des articles de mon blog les plus lus par la communauté !

Voir la sélection 🚀

Recevez les articles de la semaine par e-mail pour ne rien manquer !

S'abonner à la newsletter 📧

À propos de l'auteur

Hello, je suis Nicolas Brondin-Bernard, ingénieur web indépendant depuis 2015 passionné par le partage d'expériences et de connaissances.

Aujourd'hui je suis aussi coach pour développeurs web juniors, tu peux me contacter sur nicolas@brondin.com, sur mon site ou devenir membre de ma newsletter pour ne jamais louper le meilleur article de la semaine et être tenu au courant de mes projets !


Photo par Yannik Mika sur Unsplash