Que signifient ces codes d’état HTTP?
Les codes d'état HTTP sont une partie vitale de la navigation Web. À chaque demande que vous faites, à chaque fois que vous cliquez sur un lien ou entrez une URL, vous obtiendrez une réponse. Derrière cette réponse se trouve un code numérique résumant le résultat.
Vous avez entendu parler du code 404 et avez probablement maudit votre navigateur chaque fois qu'il en affiche un. Mais HTTP est plus puissant que vous ne le pensez, et les codes d'état gèrent de nombreux scénarios différents. Lisez la suite pour en savoir plus sur ces petits nombres cryptiques.
Comment les clients et serveurs Web communiquent
La navigation Web est rendue possible par la communication entre les clients et les serveurs. Lorsque vous demandez à afficher une page, votre client (navigateur) envoie une requête à un serveur (site Web). Nous espérons que cette demande aboutira, à quel point le serveur vous enverra une réponse que vous pourrez lire.
Dans sa réponse, le serveur Web comprend plus que du contenu. Pour commencer, il comprend une série d'en-têtes, de petits morceaux de métadonnées qui s'appliquent à la réponse. Par exemple, l'en – tête Content-Type peut ressembler à ceci:
Content-Type: text/html; charset=UTF-8
Cela signifie «la réponse est HTML» par opposition à une image ou à un fichier de musique.
Mais avant le contenu, avant même les en-têtes, chaque réponse HTTP comprend une ligne qui ressemble à ceci:
HTTP/1.1 200 OK
Dans cet exemple, parallèlement à la version HTTP (1.1), un code d'état indique «200 OK». En d'autres termes, "tout va bien, voici votre contenu." Le 200 est le bit le plus important. Les systèmes peuvent effectuer des tests pour déterminer exactement ce qui s'est passé. Le «OK» est un petit indice intéressant, décrivant le statut de tous les humains qui regardent.
Exemples de codes d'état courants
Les codes d'état 404 et 200 sont très courants, mais il existe de nombreuses autres possibilités.
- 500 (ERREUR SERVEUR INTERNE) est un état d'erreur. Cela signifie que quelque chose s'est mal passé sur le serveur et qu'il ne peut pas répondre à la demande. Cela peut être un bogue de programmation ou une autre erreur d'exécution.
- 403 (INTERDIT) signifie que le serveur a compris la demande mais refuse de l'autoriser. Cela s'applique souvent aux actions liées aux utilisateurs dans des applications Web plus complexes. Par exemple, essayer de modifier un message appartenant à quelqu'un d'autre.
- 401 (NON AUTORISÉ) est très similaire à 403. Dans ce cas, la demande d'origine n'est pas autorisée à accéder à la ressource car elle n'a fourni aucune information d'identification utilisateur. En d'autres termes, vous n'êtes pas connecté.
- 400 (BAD REQUEST) signifie que le serveur n'a pas pu comprendre ce qui était demandé. Il y a peut-être des informations manquantes, comme un paramètre d'URL. Peut-être que quelque chose a corrompu la demande en transit.
Groupes de codes d'état HTTP
Tous les codes d'état que nous avons vus jusqu'à présent sont à trois chiffres, tous compris entre 200 et 500. Ce n'est pas une coïncidence. Les statuts HTTP comportent tous trois chiffres, le premier chiffre compris entre un et cinq inclus. Et la valeur de ce premier chiffre place le code dans l'un des cinq groupes, chacun avec une signification spécifique.
Le premier groupe, 1xx, est «informationnel». Ces cas signifient tous que le serveur a compris la demande, mais n'est pas prêt à envoyer une réponse. Vous ne les verrez pas beaucoup en action, mais ils sont là pour les systèmes qui en ont besoin.
Le groupe 2xx est le siège de la réponse que vous souhaitez généralement: 200 (OK) . C'est le cas de réussite le plus courant, mais il y en a d'autres.
Le code 204 (NO CONTENT) est assez étrange. Un serveur peut le renvoyer à la suite d'un PUT ou d'un POST ou d'un PATCH. La signification, dans ces cas, serait que le serveur a effectué la mise à jour, mais il n'est pas nécessaire de renvoyer quoi que ce soit au client.
Les codes du groupe 3xx montrent comment les statuts HTTP vont au-delà de la simple communication de réussite ou d'échec. Les codes d'état commençant par 3 indiquent une redirection. Cela signifie que la demande d'origine n'était pas mauvaise, mais que le client devrait utiliser une URL différente à la place.
Cela peut être temporaire, comme dans le cas de 302 (TROUVÉ) , qu'un site peut utiliser pour héberger une URL promotionnelle qui redirige vers une page de produit finale. Un site peut utiliser une redirection permanente à la place, via le statut 301 (DÉPLACÉ PERMANENT) . C'est une bonne pratique lorsque, par exemple, un site a changé le nom d'une page.
Les statuts de redirection sont généralement accompagnés d'un en-tête Location . Cela indique au client quelle URL demander au lieu de l'original. Les serveurs répondront souvent avec des en-têtes supplémentaires. Ceux-ci fourniront des informations plus utiles que le code d'état seul.
Les statuts commençant par 4 sont des erreurs client. Essentiellement, ils signifient «le navigateur (ou la personne qui l'utilise) a fait quelque chose de mal». Nous en avons déjà discuté plusieurs (400, 401, 403, 404), et c'est le plus grand groupe de codes de statut par une quantité significative. D'autres exemples d'erreur client incluent la demande d'une URL qui existait auparavant mais qui n'existe plus: 410 (GONE) . Il y a aussi 429 (TROP DE DEMANDES) , qui prend en charge la limitation de débit afin que les ressources ne soient pas submergées. Ceci est très couramment utilisé par les API REST.
Enfin, les statuts compris entre 500 et 599 indiquent que quelque chose s'est mal passé avec le serveur alors qu'il tentait de répondre à la demande.
Obtenir l'état HTTP avec curl
L'outil de ligne de commande HTTP polyvalent le plus couramment utilisé est curl . En utilisant curl, vous pouvez envoyer des requêtes HTTP à la main, voir les détails de la réponse sous-jacente et examiner les codes d'état.
Le programme curl ne facilite pas incroyablement l'affichage d'un code d'état, mais vous pouvez le faire en utilisant quelques options, à savoir:
- -o <filename> dit à curl d'envoyer sa sortie par défaut à un fichier. Vous pouvez l'utiliser pour supprimer toutes les sorties normales.
- -w <format> affiche des informations personnalisées à partir d'un ensemble de variables disponibles, dont l'une est «http_code», c'est-à-dire le code d'état de la réponse.
Vous pouvez également utiliser -s pour masquer certains détails que curl affiche généralement sur le transfert, comme la progression en temps réel. Voici comment regrouper ces options:
$ curl -sw "%{http_code}" -o /dev/null http://example.org
200
$ curl -sw "%{http_code}" -o /dev/null http://bbc.co.uk
301
Ou vous pouvez utiliser des options légèrement différentes et un pipeline pour manipuler le résultat:
$ curl -sI http://example.org/no | head -1 | cut -f2 -d' '
404
Affichage des codes d'état dans un navigateur Web
Si jamais vous avez besoin de vérifier les codes d'état HTTP, votre navigateur Web peut vous aider. La plupart des navigateurs modernes ont une console qui peut afficher des informations avancées. En utilisant Chrome comme exemple, voici comment vérifier le code d'état d'une URL:
- Choisissez Affichage -> Développeur -> Outils de développement dans le menu principal. Cela fait basculer une petite fenêtre au bas de votre navigateur.
- Si vous ne regardez pas déjà l'onglet Réseau de la fenêtre Outils de développement, changez-le.
- Cliquez sur le bouton Doc pour afficher uniquement les demandes de contenu de page.
- Actualisez la page que vous consultez.
Notez que, à côté des URL demandées, le navigateur affiche une colonne État . Il montre exactement quel code d'état le serveur a renvoyé.

Autres ressources
Il existe de nombreuses bonnes ressources qui expliquent plus en détail les codes d'état HTTP. La page Wikipédia intitulée Liste des codes d'état HTTP et ce document officiel sur les normes de datatracker sont de bons points de départ.
La référence la plus utile pourrait être httpstatuses.com . Il explique tous les codes d'état HTTP dans un format concis et facile à comprendre. Il donne également des détails de code utiles qui peuvent être utiles lors de la programmation de tout ce qui a trait à HTTP.
Le format des URL des statuts http est particulièrement utile. La page du code d'état 403 est simplement https://httpstatuses.com/403 . Vous pouvez facilement modifier l'URL pour rechercher le code d'état dont vous avez besoin.

Les statuts HTTP font fonctionner le Web
Le code d'état HTTP est un simple numéro à trois chiffres que la plupart des gens rencontrent sous le couvert du 404. Mais il est beaucoup plus puissant que cela, et les codes d'état prennent en charge un large éventail de comportements.
HTTP2 est la prochaine version de HTTP, mais la bonne nouvelle est que les codes d'état restent les mêmes. Tout ce que vous avez appris ici sera toujours pertinent dans un avenir prévisible.