Les codes de réponse HTTP sont essentiels pour comprendre la communication entre un navigateur et un serveur web. Chaque code de statut HTTP est constitué de trois chiffres et appartient à une série (1xx, 2xx, 3xx, 4xx, 5xx) qui dénote une catégorie particulière de réponse. Ces codes aident à diagnostiquer et à résoudre les problèmes que rencontrent les utilisateurs lorsqu’ils naviguent sur un site web.
Dans cet article, nous allons explorer chaque catégorie de code de réponse HTTP, expliquer leur signification et voir comment gérer les erreurs. Une fois n’est pas coutume, j’ai pris soin de rédiger un résumé (TL;DR) de ce long article, qui pourrait sinon sembler totalement indigeste pour les novices.
Crédits : Cet article a été rédigé en collaboration avec Nicolas Saenen, qui m’en a suggéré l’idée et en a assuré la relecture. Nicolas est un contributeur régulier du groupe Facebook Entraide WordPress France, dont je suis coadministrateur avec Carole Petithomme – Mon Coach WP.
TL;DR (pour les débutants)
Les codes de réponse HTTP indiquent l’état d’une requête entre le client (navigateur) et le serveur. Ils se répartissent en 5 catégories :
- 1xx : Informations, la requête est en cours de traitement.
- 2xx : Succès, la requête a été complétée avec succès.
- 3xx : Redirection, le client doit effectuer une autre action pour accéder à la ressource.
- 4xx : Erreur du client, la requête est mal formulée ou non autorisée.
- 5xx : Erreur du serveur, il y a un problème côté serveur.
Les codes 3xx peuvent être utilisés intentionnellement pour rediriger des utilisateurs, tandis que les codes 4xx et 5xx indiquent généralement des erreurs à corriger pour garantir le bon fonctionnement d’un site web.
1xx – Réponses Informelles
Les codes 1xx indiquent que la requête est en cours de traitement et qu’une réponse finale est à venir. Ils sont peu fréquents dans la navigation classique, mais essentiels dans certains cas de communication spécifique.
- 100 Continue : Le serveur a reçu une partie de la requête et attend le reste avant de continuer à traiter.
- 101 Switching Protocols : Le client demande un changement de protocole (par exemple, HTTP vers HTTPS), et le serveur accepte.
- 102 Processing : Le serveur WebDAV confirme que la requête est en cours de traitement, mais n’est pas encore finalisée.
- 103 Early Hints : Le serveur envoie des indices préliminaires pour indiquer au client quels fichiers il pourrait charger, optimisant ainsi le temps de chargement avant la réponse finale.
2xx – Réponses de Succès
Les codes 2xx indiquent que la requête a été reçue, comprise, et traitée avec succès. En voici la liste :
- 200 OK : La requête a été traitée avec succès, et la réponse contient la ressource demandée.
- 201 Created : Une nouvelle ressource a été créée avec succès suite à une requête POST.
- 202 Accepted : La requête a été acceptée, mais son traitement n’est pas encore finalisé.
- 203 Non-Authoritative Information : La réponse inclut des données obtenues auprès d’une source tierce, non vérifiées par le serveur.
- 204 No Content : La requête a réussi, mais aucune information n’est envoyée en réponse.
- 205 Reset Content : Demande au client de réinitialiser un formulaire ou une vue après la réussite de la requête.
- 206 Partial Content : Le serveur ne renvoie qu’une partie de la ressource, généralement pour répondre à une requête de téléchargement partiel.
- 207 Multi-Status : Utilisé principalement avec WebDAV, ce code indique que la réponse contient plusieurs états pour les ressources, permettant un retour d’information détaillé sur le traitement des requêtes multiples.
- 208 Already Reported : Également utilisé avec WebDAV, ce code informe le client que certaines ressources ont déjà été incluses dans la réponse précédente, évitant ainsi la répétition d’informations.
- 226 IM Used : Ce code signifie que le serveur a répondu avec les résultats d’une requête “GET” conditionnelle, et que les modifications demandées via la méthode “PATCH” ou “POST” ont été appliquées.
3xx – Redirections
Les codes 3xx signifient qu’une action supplémentaire est nécessaire pour compléter la requête. Ces codes peuvent être utilisés volontairement pour rediriger les utilisateurs, ou ils peuvent survenir lorsque le contenu demandé a été déplacé.
- 300 Multiple Choices : Plusieurs options sont disponibles pour la ressource demandée, le client doit en sélectionner une.
- 301 Moved Permanently : La ressource a été définitivement déplacée à une nouvelle URL, utile pour le SEO.
- 302 Found : La ressource a été temporairement déplacée à une autre URL, mais pourra revenir à l’URL initiale.
- 303 See Other : Après un POST, redirige vers une autre ressource généralement pour obtenir une confirmation.
- 304 Not Modified : La ressource n’a pas changé depuis la dernière requête, elle peut donc être servie à partir du cache.
- 307 Temporary Redirect : La redirection est temporaire (comme la 302), mais la méthode de requête (GET/POST) ne doit pas changer.
- 308 Permanent Redirect : La redirection est permanente (comme la 301), sans autoriser de changement dans la méthode de requête utilisée.
- 310 Too Many Redirects : Ce code indique que le client a été redirigé un trop grand nombre de fois. Cela se produit lorsqu’une boucle de redirection est détectée, par exemple si deux pages se redirigent mutuellement ou si une page renvoie indéfiniment vers elle-même.
Utilisations intentionnelles
Les codes de redirection (301 et 302) sont souvent utilisés pour maintenir la cohérence des URL et améliorer le référencement (SEO).
Exemple : une redirection 301 informe Google du changement d’adresse d’une page, afin de conserver le positionnement.
Comment y remédier (si non souhaité)
- 300 Multiple Choices : Examinez les options de réponse disponibles et choisissez la réponse appropriée à renvoyer au client. Assurez-vous que le client dispose d’une logique pour sélectionner une réponse.
- 301 Moved Permanently : Vérifiez que les redirections sont correctement configurées. Assurez-vous que les anciennes URL redirigent vers les nouvelles pour maintenir le SEO.
- 302 Found : Vérifiez que cette redirection est appropriée. Si elle est temporaire, assurez-vous qu’elle n’affecte pas le référencement des pages redirigées.
- 303 See Other : Assurez-vous que la redirection vers la nouvelle ressource est correctement implémentée après un POST. Vérifiez les URLs pour éviter des boucles de redirection.
- 304 Not Modified : Si vous rencontrez des problèmes, vérifiez les en-têtes de cache et assurez-vous que le client envoie des requêtes avec les bons en-têtes de condition.
- 307 Temporary Redirect : Confirmez que le changement de protocole est bien respecté. Vérifiez que la redirection est temporaire et assurez-vous qu’elle ne modifie pas le comportement des requêtes.
- 308 Permanent Redirect : Vérifiez que les redirections permanentes sont bien appliquées sans changement de protocole. Assurez-vous que les ressources redirigées restent accessibles.
- 310 Too Many Redirects : Vérifiez les règles de redirection dans les fichiers de configuration (comme .htaccess ou nginx.conf). Assurez-vous qu’il n’y a pas de redirections circulaires. Désactivez temporairement les plugins ou modules de redirection pour identifier la cause du problème.
4xx – Erreurs Client
Les codes 4xx indiquent des erreurs de la part du client, souvent causées par des requêtes mal formées ou des accès non autorisés.
- 400 Bad Request : La requête envoyée par le client est mal formée ou invalide, elle ne peut pas être traitée.
- 401 Unauthorized : L’accès à la ressource nécessite une authentification valide, non fournie ou incorrecte.
- 403 Forbidden : L’accès à la ressource est refusé, même si l’utilisateur est authentifié.
- 404 Not Found : La ressource demandée n’a pas été trouvée sur le serveur.
- 405 Method Not Allowed : La méthode de requête utilisée (comme GET ou POST) n’est pas autorisée pour la ressource demandée, signalant une incompatibilité.
- 406 Not Acceptable : Le serveur ne peut pas fournir une réponse qui correspond aux critères d’acceptation du client, souvent liés aux types de contenu demandés.
- 407 Proxy Authentication Required : Le client doit d’abord s’authentifier auprès d’un proxy avant de pouvoir accéder à la ressource demandée.
- 408 Request Timeout : Le serveur a mis fin à la connexion en raison d’un délai d’attente dépassé pour la requête du client.
- 409 Conflict : La requête ne peut pas être traitée en raison d’un conflit avec l’état actuel de la ressource, souvent rencontré lors de mises à jour concurrentes.
- 410 Gone : La ressource a été définitivement supprimée, elle n’est plus disponible.
- 411 Length Required : Le serveur refuse de traiter la requête sans l’en-tête “Content-Length” spécifiant la taille du corps de la requête.
- 412 Precondition Failed : Une des préconditions données dans les en-têtes de la requête échoue, ce qui empêche le traitement.
- 413 Payload Too Large : Le corps de la requête dépasse la limite autorisée par le serveur, empêchant le traitement de la requête.
- 414 URI Too Long : L’URI (Uniform Resource Identifier) fournie est trop longue pour être traitée par le serveur.
- 415 Unsupported Media Type : Le type de média de la requête n’est pas pris en charge par le serveur, empêchant le traitement de la ressource demandée.
- 416 Range Not Satisfiable : La requête contient un en-tête “Range” qui spécifie une plage non disponible pour la ressource, entraînant un échec.
- 417 Expectation Failed : Le serveur ne peut pas satisfaire l’en-tête “Expect” de la requête, indiquant une incapacité à répondre comme prévu.
- 418 I’m a teapot : Une réponse humoristique de la spécification HTTP, indiquant que le serveur est une théière et ne peut pas produire de café, souvent utilisé pour illustrer des erreurs non sérieuses.
- 421 Misdirected Request : La requête a été envoyée à un serveur qui n’est pas capable de produire une réponse, généralement à cause d’une erreur de configuration.
- 422 Unprocessable Entity : Le serveur comprend le contenu de la requête, mais ne peut pas traiter les instructions, souvent utilisé avec des formats de données non valides.
- 423 Locked : La ressource demandée est verrouillée et ne peut pas être modifiée tant qu’elle est dans cet état, souvent utilisé dans des systèmes de gestion de contenu.
- 424 Failed Dependency : La requête a échoué en raison de l’échec d’une autre requête qui en était dépendante, ce qui empêche le traitement.
- 425 Too Early : Le serveur refuse de traiter la requête car il détecte qu’une requête préalable n’a pas encore été complétée, ce qui pourrait entraîner des erreurs de synchronisation. Ce code est utilisé pour éviter les requêtes précoces dans des contextes où l’ordre des opérations est crucial.
- 426 Upgrade Required : Le client doit changer de protocole pour accéder à la ressource, souvent utilisé pour encourager l’utilisation de HTTPS.
- 428 Precondition Required : Le serveur exige que la requête soit conditionnelle pour éviter les conflits, souvent utilisé pour garantir la cohérence des mises à jour.
- 429 Too Many Requests : Le client a envoyé trop de requêtes dans un délai donné, généralement utilisé pour limiter le spam ou les abus.
- 431 Request Header Fields Too Large : Les en-têtes de la requête sont trop volumineux pour être traités par le serveur, ce qui empêche le traitement de la requête.
- 451 Unavailable For Legal Reasons : L’accès à la ressource est refusé pour des raisons juridiques, généralement lié à des restrictions de contenu.
Causes possibles
- Pages supprimées ou mal redirigées.
- Problèmes d’authentification ou d’autorisation.
Note : l’erreur 410 (on parle aussi de redirection 410) peut être intentionnelle, elle est notamment utilisée pour signifier aux moteurs de recherche que la page concernée a existé mais a été supprimée définitivement, les incitant ainsi à la désindexer.
Comment y remédier
- 400 Bad Request : Vérifiez la syntaxe de la requête. Assurez-vous qu’il n’y a pas d’erreurs dans l’URL ou dans les paramètres transmis.
- 401 Unauthorized : Assurez-vous que l’utilisateur est authentifié. Vérifiez les informations d’identification et les permissions d’accès aux ressources.
- 402 Payment Required : Bien que peu utilisé, vérifiez si le service nécessite un paiement et que l’utilisateur a fourni les informations nécessaires.
- 403 Forbidden : Vérifiez les autorisations d’accès. Assurez-vous que l’utilisateur a les droits nécessaires pour accéder à la ressource demandée.
- 404 Not Found : Assurez-vous que toutes les URL du site sont correctes et, si besoin, configurez des redirections appropriées.
- 405 Method Not Allowed : Vérifiez que la méthode HTTP utilisée (GET, POST, etc.) est autorisée pour la ressource demandée.
- 406 Not Acceptable : Confirmez que le serveur ne peut pas fournir une réponse appropriée selon les critères de contenu spécifiés par le client.
- 407 Proxy Authentication Required : Assurez-vous que le client s’authentifie correctement auprès du proxy pour accéder à la ressource.
- 408 Request Timeout : Vérifiez la connexion entre le client et le serveur. Si le client met trop de temps à envoyer la requête, envisagez d’optimiser la connexion.
- 409 Conflict : Résolvez les conflits liés à la requête, souvent causés par des conflits d’état entre la ressource demandée et l’état actuel.
- 410 Gone : Si la ressource a été supprimée intentionnellement, vérifiez qu’elle n’est plus indexée. Mettez à jour les liens internes et informez les utilisateurs si nécessaire.
- 411 Length Required : Assurez-vous que la requête contient l’en-tête
Content-Length
requis par le serveur pour le traitement. - 412 Precondition Failed : Vérifiez que les conditions spécifiées dans les en-têtes de la requête sont remplies pour que le serveur puisse traiter la demande.
- 413 Payload Too Large : Assurez-vous que la taille de la requête n’excède pas la limite imposée par le serveur.
- 414 URI Too Long : Vérifiez que l’URL envoyée dans la requête n’est pas trop longue pour être traitée par le serveur.
- 415 Unsupported Media Type : Confirmez que le type de contenu envoyé par le client est supporté par le serveur.
- 416 Range Not Satisfiable : Assurez-vous que les en-têtes de plage spécifiés dans la requête correspondent aux plages disponibles sur la ressource.
- 417 Expectation Failed : Vérifiez que les attentes spécifiées par le client dans l’en-tête
Expect
sont acceptables pour le serveur. - 418 I’m a teapot : Bien que ce code soit humoristique, respectez la conformité si vous gérez des services qui l’incluent.
- 421 Misdirected Request : Vérifiez que la requête est adressée à un serveur capable de traiter la méthode requise pour la ressource demandée.
- 422 Unprocessable Entity : Vérifiez que les données envoyées dans la requête sont valides et que le serveur peut les traiter.
- 423 Locked : Assurez-vous que la ressource demandée n’est pas verrouillée et peut être accédée ou modifiée.
- 424 Failed Dependency : Vérifiez que toutes les dépendances nécessaires à la requête ont été satisfaites pour éviter les échecs.
- 425 Too Early : Ne pas traiter les requêtes avant que le serveur ait suffisamment d’informations sur le client pour éviter les erreurs.
- 426 Upgrade Required : Assurez-vous que le client peut mettre à jour vers un protocole supérieur pour accéder à la ressource.
- 428 Precondition Required : Vérifiez que les préconditions sont requises par le serveur pour que la requête soit traitée.
- 429 Too Many Requests : Implémentez un système de limitation des requêtes pour éviter une surcharge de demandes au serveur.
- 431 Request Header Fields Too Large : Assurez-vous que la taille des en-têtes de requête envoyés ne dépasse pas la limite imposée par le serveur.
- 451 Unavailable For Legal Reasons : Vérifiez que l’accès à la ressource est légalement restreint et fournissez des informations appropriées sur les raisons.
5xx – Erreurs Serveur
Les codes 5xx signalent des problèmes du côté serveur, souvent causés par une surcharge ou une mauvaise configuration.
- 500 Internal Server Error : Erreur générique signalant un problème interne du serveur sans information précise.
- 501 Not Implemented : Le serveur ne supporte pas la fonctionnalité requise pour traiter la requête, souvent due à une méthode HTTP non supportée.
- 502 Bad Gateway : Le serveur a reçu une réponse invalide ou incorrecte d’un autre serveur en amont.
- 503 Service Unavailable : Le serveur est temporairement surchargé ou en maintenance, ne pouvant traiter la requête.
- 504 Gateway Timeout : Le serveur a mis trop de temps à répondre à une requête relayée à un autre serveur, généralement dû à un délai dépassé dans la communication entre serveurs.
- 505 HTTP Version Not Supported : Le serveur ne supporte pas la version du protocole HTTP utilisée dans la requête.
- 506 Variant Also Negotiates : Le serveur a des erreurs de négociation de contenu pour la requête, généralement lié à des problèmes de configuration.
- 507 Insufficient Storage : Le serveur ne peut pas stocker la représentation nécessaire pour traiter la requête, souvent lié à des problèmes d’espace disque.
- 508 Loop Detected : Le serveur a détecté une boucle infinie lors du traitement d’une requête, souvent dans des configurations WebDAV.
- 510 Not Extended : La requête nécessite des extensions non satisfaites pour être exécutée, ce qui signifie qu’il manque des fonctionnalités requises.
- 511 Network Authentication Required : Ce code indique que l’accès au réseau nécessite une authentification. Le client doit se connecter au réseau pour poursuivre l’accès à la ressource demandée.
Causes possibles
- Mauvaise configuration des fichiers côté serveur (.htaccess).
- Problèmes avec les extensions ou thèmes dans le cas d’un site WordPress.
Comment y remédier
- 500 Internal Server Error : Vérifiez les fichiers de configuration du serveur, tels que .htaccess, pour détecter d’éventuelles erreurs de syntaxe ou de configuration.
- 501 Not Implemented : Assurez-vous que le serveur prend en charge la méthode de requête utilisée. Mettez à jour ou configurez le serveur pour gérer la requête demandée.
- 502 Bad Gateway : Assurez-vous que tous les serveurs en amont sont opérationnels. Vérifiez les connexions réseau et les configurations de proxy si nécessaire.
- 503 Service Unavailable : Surveillez les ressources du serveur. Si la surcharge est fréquente, envisagez d’optimiser les performances ou d’augmenter les ressources.
- 504 Gateway Timeout : Vérifiez la latence des services externes. Assurez-vous que le serveur répond dans les délais impartis et examinez les configurations de délai d’attente.
- 505 HTTP Version Not Supported : Vérifiez que le serveur prend en charge la version HTTP utilisée dans la requête. Mettez à jour la configuration du serveur si nécessaire.
- 506 Variant Also Negotiates : Assurez-vous que la configuration de négociation de contenu est correcte. Vérifiez les paramètres de négociation du serveur pour éviter les conflits.
- 507 Insufficient Storage : Libérez de l’espace sur le serveur. Vérifiez la capacité de stockage et supprimez les fichiers inutiles pour permettre la création de nouvelles ressources.
- 508 Loop Detected : Identifiez et corrigez les boucles infinies dans les configurations du serveur ou les scripts. Utilisez des outils de débogage pour détecter ces erreurs.
- 510 Not Extended : Vérifiez que la requête contient toutes les extensions nécessaires pour que le serveur puisse la traiter. Mettez à jour les en-têtes de requête pour répondre aux exigences du serveur.
- 511 Network Authentication Required : Assurez-vous que les utilisateurs se connectent au réseau pour authentifier leur accès. Mettez en place des processus clairs pour l’authentification réseau.
Codes de réponse HTTP courants avec WordPress
Certains codes de réponse HTTP sont particulièrement fréquents sur les sites WordPress :
- 404 Not Found : Se produit souvent lorsque des pages sont supprimées ou si les permaliens sont mal configurés.
Solution : créer des redirections dans le fichier .htaccess ou utiliser un plugin de redirection pour gérer les liens brisés. - 500 Internal Server Error : Peut survenir à cause d’un conflit entre les extensions ou des erreurs dans des fichiers (notamment .htaccess). Cela peut être dû à une incompatibilité de version PHP ou un conflit entre des extensions.
Solution : essayer de désactiver temporairement les extensions, changer le thème ou ajuster le fichier .htaccess. - 502 Bad Gateway : Peut indiquer un problème de communication entre le serveur et un proxy ou un autre serveur.
Solution : Vérifier l’état du serveur et s’assurer que tout est correctement configuré côté proxy. - 503 Service Unavailable : Généralement dû à une surcharge du serveur ou à une maintenance.
Solution : Augmenter les ressources serveur ou vérifier si des tâches planifiées sont en cause (comme des sauvegardes automatiques ou des scans de sécurité). - 504 Gateway Timeout : Peut survenir si WordPress met trop de temps à communiquer avec un autre service (comme une API).
Solution : Vérifier les délais et les services externes sollicités par WordPress.
Conclusion
Les codes de réponse HTTP sont essentiels pour diagnostiquer les problèmes de performances ou d’accès. Comprendre et savoir traiter les erreurs courantes, notamment sur WordPress, permet d’améliorer l’expérience utilisateur et le SEO.
Votre site rencontre des erreurs ou redirections non souhaitées et vous n’êtes pas en mesure d’apporter vous-même les corrections nécessaires ? Je vous propose de m’en charger pour vous, ponctuellement ou sur le long terme !
Articles recommandés
- Documentation officielle des codes HTTP : MDN Web Docs sur les codes de statut HTTP
- SEO et redirections 301 vs 302 : Moz – Guide sur les redirections
- Résoudre les erreurs 404 sur WordPress : WPBeginner – Comment corriger les erreurs 404
- Problèmes avec l’erreur 500 sur WordPress : Kinsta – Corriger l’erreur 500 sur WordPress
- Dépannage des erreurs 503 sur WordPress : SiteGround – Solutions aux erreurs 503
- Redirections et SEO sur WordPress : Yoast – Pourquoi et comment utiliser les redirections 301
0 commentaires