Ceci n'est pas une erreur 404
Si vous parvenez à lire cet article, cela veut dire que vous avez réussi à accéder à cette page (logique).
C'est bien, bravo. Cependant, il n'est pas rare lorsque l'on parcourt le web, de tomber sur cette très frustrante erreur 404, souvent accompagnée d'un laconique « NOT FOUND ».
Nous connaissons tous cette fameuse page qui fait bien malgré elle partie intégrante de la culture web, et est même rentrée dans le langage courant. Mais savez-vous concrètement ce qu'elle signifie ? Et s'il existe une erreur 404, existe-t-il d'autres numéros d'erreur sur lesquelles on pourrait tomber ?
Un site web, c'est comme un restaurant
Quand on navigue sur le web, c'est presque la même chose que lorsqu'on commande un plat au restau : il y a un serveur dont le rôle est de répondre à tous les demandes du client (vous).
Ça tombe bien, dans le jargon technique on utilise exactement les mêmes termes, à la différence près qu'ici, le serveur n'est pas un être humain mais un ordinateur qui se trouve quelque part dans le monde, que le client est aussi un ordinateur (le vôtre), et que le plat que vous allez commander n'est rien d'autre qu'une page web. Désolé pour les gourmands.
Ah oui, ces différences-là en impliquent une autre : un ordinateur ne parle malheureusement pas le français, ni même l'anglais. D'ailleurs, pour communiquer entre eux, nos ordinateurs (le client et le serveur) ont besoin d'être reliés via le réseau internet. Et le langage qu'ils vont utiliser est des plus basiques : ils vont échanger via des requêtes HTTP.
Une histoire de codes HTTP
Voici sans doute un terme qui vous parle. C'est l'acronyme que l'on indique lorsque l'on accède à une page web, et qui permet de reconnaître très facilement une URL, le fameux « http://
» que l'on connait tous (qui a été supplanté par « https://
», sa version sécurisée).
HTTP signifie HyperText Transfer Protocol (protocole de transfert hypertexte pour ceux qui n'ont pas le TOEIC). Il 'agit du protocole d'échange utilisé pour le web, en d'autres termes, l'ensemble des règles et procédures nécessaires qui régissent les communications entre client (pour rappel, c'est vous) et serveur (là où le site que vous souhaitez consulter se trouve).
Tout démarre par une requête ...
Lorsque vous accédez à une page web, n'importe laquelle, sans le savoir vous envoyez au serveur web une requête HTTP de type GET. Il existe plusieurs types de requêtes HTTP, mais les navigateurs web tels que Chrome, Firefox ou Internet Explorer (mdr) ne sont capables d'envoyer que des requêtes GET (et POST, lors de l'envoi d'un formulaire, de connexion par exemple).
Par exemple, voici (un extrait de) la requête que le navigateur envoie lorsqu'on tente d'accéder au site macademia.fr :
GET / HTTP/1.1
Host: macademia.fr
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,
image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Bon, pour faire simple, cette requête demande au serveur qui se trouve à l'adresse web macademia.fr
: « je souhaite consulter la page nommée /
» (vous l'avez compris, au restaurant cela revient à demander « je souhaite commander le plat /
»). Cette page nommée /
correspond tout simplement à la page d'accueil.
... à laquelle le serveur répond
Lorsque le serveur reçoit la requête, il l'étudie et prépare sa réponse.
La réponse du serveur dépend grandement de la requête envoyée par l'utilisateur. Quoiqu'il en soit, peu importe la réponse qui sera retournée, le serveur y associera un code HTTP. Ce code à 3 chiffres permet au client de comprendre très rapidement la nature de la réponse du serveur. Un message y est fréquemment associé afin de rendre le code plus compréhensible par un être humain.
Et donc 404 ... ça veut dire ?
Vous l'aurez compris, 404 correspond simplement au code HTTP qui est retournée par le serveur dans le cas où vous commandez un plat qui n'existe pas sur la carte. Enfin je veux dire, dans le cas où vous tentez d'accéder à une URL que le serveur ne connaît pas, tout simplement car elle n'existe pas.
Deux possibilités : soit vous avez vraiment demandé un plat sorti de votre imagination, ou bien le plat a été supprimé récemment de la carte, mais dans les deux cas le serveur vous répondra la même chose.
Il existe une multitude de codes HTTP, certains sont très fréquents, d'autres quasiment jamais utilisés. Tous commencent par un premier chiffre compris entre 1 et 5 : c'est ce premier chiffre qui désigne la nature de la réponse du serveur. Les messages commençant par 1 ne sont pas très utiles, donc je vous propose un petit tour d'horizon des différents codes HTTP existants en commençant directement par ceux qui débutent par 2.
Codes 2xx : je vous apporte votre plat
Assez paradoxalement, tout le monde connaît le code HTTP correspondant à une erreur lorsqu'on accède à une page, mais parmi le grand public très peu sont capables de citer le code qui est retourné quand tout va bien. Il s'agit du code 200, et le message qui lui est associé est un simple « OK ».
Les codes commençant par un 2 sont catégorisés comme « succès », et indiquent une réponse positive du serveur. Votre commande a bien été comprise, le chef l'a préparée et le serveur vous ramène votre plat sous cloche. Quelle classe.
Codes 3xx : vous avez demandé ce plat mais je vous ramène autre chose
Les codes commençant par un 3 indiquent une redirection : le serveur a entendu votre commande, l'a bien comprise, et malgré cela vous a ramené le mauvais plat. Ce n'est pas forcément sa faute, pas la peine de l'accabler : il n'a fait qu'obéir à son patron (le développeur du site).
Un exemple simple et concret : vous tentez d'accéder à la page https://macademia.fr/formations/developpement-web
, et le serveur vous retourne la page https://macademia.fr/formations/html5-et-css3
.
Parfois, un plat sur une carte est remplacé temporairement par un autre : dans ce cas le serveur nous répond 302 (redirection temporaire). Mais il arrive également qu'un plat soit remplacé définitivement par un autre : le serveur nous répond alors 301 (redirection permanente).
Il y a de nombreuses raisons qui peuvent expliquer la présence de redirections sur des sites web, notamment pour éviter la présence de liens morts (et donc par conséquent, d'erreurs 404).
Codes 4xx : il y a un problème avec votre commande
Comme évoqué plus haut, une erreur 404 survient lorsque le client demande un plat qui n'existe pas. De manière générale, tous les codes commençant par 4 sont dûs à une erreur du client. Mais en réalité, pas tant que ça : cela veut juste dire qu'il n'est pas possible de répondre à votre requête, pour diverses raisons.
Cela peut être dû soit parce que le client ne sait pas s'exprimer (400, Bad Request), soit parce qu'il ne s'est pas identifié (401, Unauthorized), soit parce qu'il a demandé quelque chose d'interdit (403, Forbidden), soit parce qu'il a mis trop de temps à passer sa commande (408, Request Time-out), ou bien encore parce qu'il a rage quit à cause du serveur qui a mis trop de temps pour lui apporter sa commande (499, Client Closed Request).
Il existe même un code associé à la censure mise en place par des gouvernements : le 451.
Code 5xx : cauchemar en cuisine
Là, c'est le pire des scénarios.
Cette-fois ci, le problème provient du serveur : l'erreur la plus fréquente de cette catégorie est le code 500 (erreur interne du serveur).
Les erreurs de type 5xx peuvent être dues à plusieurs facteurs : trop forte affluence, serveur de piètre qualité, dysfonctionnement de l'une des machines ... Très souvent, il s'agit tout bêtement d'une erreur de programmation du site web.
Dans ce cas, il n'y a qu'une seule chose à faire pour le client : essayer de repasser un peu plus tard, ou bien même envisager de ne plus fréquenter ce restaurant si ce genre d'erreur survient trop souvent.
Je suis une théière
Pour conclure cette article, je voulais citer le code le plus WTF de la liste : le 418, dont le message associé est I'm a teapot.
Si si sérieux, ça existe vraiment, d'ailleurs Google a même une page pour cela : https://www.google.com/teapot/. Il s'agissait initialement d'un poisson d'avril, qui a fini par être standardisé.