Codes d'État HTTP & En-têtes de Réponse : Référence Complète
Comprendre les codes d'état et les en-têtes HTTP est fondamental pour les développeurs web, les spécialistes SEO et les administrateurs système. Ce guide de référence couvre les codes et en-têtes les plus importants utilisés dans la communication web moderne.
1. Référence Rapide des Codes d'État HTTP
Les codes d'état sont regroupés en cinq classes selon le premier chiffre.
1xx : Information
- 101 Switching Protocols : Le serveur accepte de changer de protocole (ex : passage aux WebSockets).
2xx : Succès
- 200 OK : La requête a réussi.
- 201 Created : La requête a réussi et une nouvelle ressource a été créée.
- 204 No Content : La requête a réussi, mais il n'y a pas de contenu à renvoyer.
3xx : Redirection
- 301 Moved Permanently : La ressource a été déplacée de façon permanente vers une nouvelle URL.
- 302 Found : La ressource se trouve temporairement sur une autre URL.
- 304 Not Modified : Utilisé pour le cache ; indique que la ressource n'a pas changé.
4xx : Erreur du Client
- 400 Bad Request : Le serveur ne peut pas traiter la requête en raison d'une erreur client (ex : syntaxe erronée).
- 401 Unauthorized : Une authentification est requise.
- 403 Forbidden : Le serveur comprend la requête mais refuse de l'autoriser.
- 404 Not Found : La ressource demandée n'a pas pu être trouvée.
- 429 Too Many Requests : L'utilisateur a envoyé trop de requêtes dans un temps donné (Limitation de débit).
5xx : Erreur du Serveur
- 500 Internal Server Error : Message d'erreur générique lorsqu'un serveur rencontre une condition inattendue.
- 502 Bad Gateway : Le serveur, agissant comme passerelle, a reçu une réponse invalide du serveur amont.
- 503 Service Unavailable : Le serveur est actuellement incapable de traiter la requête (ex : maintenance ou surcharge).
- 504 Gateway Timeout : Le serveur n'a pas reçu de réponse à temps du serveur amont.
2. En-têtes de Réponse HTTP Essentiels
Les en-têtes fournissent des métadonnées sur la réponse ou le serveur.
Contrôle du Cache : Cache-Control
Contrôle comment le navigateur et les caches intermédiaires (comme les CDN) stockent la ressource.
public, max-age=31536000, immutable: Idéal pour les ressources statiques versionnées (JS, CSS).no-store: Ne rien stocker en cache (utile pour les données sensibles).no-cache: Doit revalider avec le serveur avant d'utiliser la version en cache.
Sécurité : Strict-Transport-Security (HSTS)
Indique au navigateur de n'accéder au site que via HTTPS.
- Exemple :
max-age=63072000; includeSubDomains; preload
Gestion des Sessions : Set-Cookie
Envoie un cookie du serveur vers l'agent utilisateur.
- Exemple :
id=abc; Max-Age=3600; Secure; HttpOnly; SameSite=Lax- HttpOnly : Empêche le JavaScript d'accéder au cookie (atténue les attaques XSS).
- Secure : Envoie le cookie uniquement via HTTPS.
- SameSite : Contrôle le comportement des cookies intersites (Lax, Strict ou None).
Négociation de Contenu : Content-Type & Accept-Encoding
- Content-Type : Indique le type de média de la ressource (ex :
text/html,application/json). - Accept-Encoding : Communiqué par le client pour indiquer la compression supportée (ex :
gzip,br).
3. Tableau Comparatif : Redirection 301 vs 302
| Caractéristique | 301 Moved Permanently | 302 Found (Temporaire) |
|---|---|---|
| Impact SEO | Transmet l'autorité (PageRank) | Ne transmet pas l'autorité |
| Cache Navigateur | Caché par défaut | Non caché par défaut |
| Cas d'Utilisation | Migration de site, changement d'URL | Maintenance, promotions temporaires |
FAQ : Problèmes HTTP Courants
Q : Pourquoi ai-je une erreur 403 Forbidden alors que je suis connecté ?
R : Cela arrive souvent si l'utilisateur n'a pas les permissions/rôles spécifiques pour cette ressource, ou s'il y a un décalage de jeton CSRF.
Q : Quelle est la différence entre 401 et 403 ?
R : 401 Unauthorized signifie "Je ne sais pas qui vous êtes" (veuillez vous connecter). 403 Forbidden signifie "Je sais qui vous êtes, mais vous n'avez pas le droit d'être ici".
Q : Comment corriger une erreur 502 Bad Gateway ?
R : C'est généralement un problème côté serveur. Vérifiez si l'application backend (ex : Node.js, Python) fonctionne ou si le proxy inverse (Nginx/Apache) est correctement configuré.
Outils Associés
- Analyseur d'En-têtes HTTP : Inspectez et analysez les en-têtes de n'importe quelle URL.
- Générateur de Cache-Control : Générez des politiques de cache optimisées.
- Vérificateur de Code d'État : Vérifiez le code de réponse pour votre API ou site web.