132 codes de statut et en-têtes HTTP
Ce que veulent dire 404 et 500, et ce que font Content-Type ou Cache-Control — une ligne chacun.
Codes de statut
1xx Information4
Une note d'avancement ; la vraie réponse suit.
2xx Succès10
La requête a abouti.
3xx Redirection7
Allez ailleurs — la différence tient au caractère permanent ou temporaire.
4xx Erreur client29
Le problème vient de la requête ; la renvoyer telle quelle échouera encore.
5xx Erreur serveur11
Le problème vient du serveur ; réessayer plus tard en vaut souvent la peine.
En-têtes
En-têtes de requête28
En-têtes ajoutés par le navigateur à l'envoi.
En-têtes de réponse30
En-têtes ajoutés par le serveur à la réponse.
Dans les deux sens13
En-têtes pouvant figurer des deux côtés.
Comment lire
- Le premier chiffre du code porte le sens : 4 désigne la requête, 5 le serveur.
- 404 veut dire « absent » ; 403, « présent mais interdit ». Les confondre rallonge le débogage.
- Les noms d'en-tête sont insensibles à la casse : Content-Type et content-type sont identiques.
- Les soucis de cache et de CORS tiennent souvent à une ligne d'en-tête, visible dans l'onglet réseau.
Questions fréquentes
Q. Quelle différence entre 404 et 403 ?
404 dit qu'il n'y a rien à cette adresse ; 403 dit qu'il y a quelque chose, mais pas pour vous. Certains serveurs renvoient volontairement 404 pour masquer l'existence même de la ressource.
Q. Puis-je faire quelque chose face à un 500 ?
Les codes commençant par 5 relèvent du serveur : le plus souvent, il ne reste qu'à attendre. Un 502 ou un 504 se situe entre deux serveurs et se résout souvent en réessayant peu après.
Q. Comment choisir entre 301 et 302 ?
301 quand l'adresse a changé définitivement, 302 pour un détour temporaire. Navigateurs et moteurs retiennent longtemps un 301 : difficile de revenir en arrière.
Q. Les noms d'en-tête sont-ils sensibles à la casse ?
Non. Content-Type et content-type désignent le même en-tête, et depuis HTTP/2 ils circulent en minuscules par définition.
Q. Pourquoi les erreurs CORS surviennent-elles ?
Quand une page tente de lire une réponse d'une autre origine, le navigateur bloque, sauf autorisation du serveur via Access-Control-Allow-Origin. Le serveur a bien répondu : c'est le navigateur qui refuse de transmettre le corps à votre code, d'où une réponse visible dans l'onglet réseau mais illisible par le script.