Les codes de retour HTTP indispensables à connaitre
Vous connaissez sûrement les codes 200, 404 et 500, mais les autres alors ?
Article publié le 26/04/2021, dernière mise à jour le 19/09/2023
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 !
Aucun commentaire pour l'instant