L’analyse des codes d’état HTTP

Publié le 26 mars 2010 par Maccimum

Pour faire simple, le rôle des en-têtes HTTP consiste à définir les modalités d’échange entre votre navigateur et le serveur. Selon le type de la demande du navigateur Web et le résultat des recherches de données sur l’ordinateur serveur, le serveur transmet un code (sous la forme d’un nombre composé de trois chiffres) dans les données d’entête HTTP de la réponse. Ce nombre représente le code d’état HTTP. Il renseigne sur le rapport entre les données livrées par le serveur et les données souhaitées par le navigateur. C’est ainsi que des messages d’erreur sont transmis, mais également des observations comme le transfert de cookie ou bien une redirection vers une autre page. Le navigateur peut évaluer le code d’état et réagir en conséquence. Par ailleurs, le serveur Web écrit le code d’état HTTP de la demande dans ses fichiers Log.

Hypertext Transfer Protocol, plus connu sous l’abréviation HTTP est un des protocole de communication client-serveur développé pour le World Wide Web. C’est le protocole utilisé lorsqu’on parle de web.

Il est utile de connaître les différents codes d’état HTTP, leur signification et les raisons possibles de leur apparition. C’est ce que nous verrons dans la deuxième partie de cet article. Mais tout d’abord, intéressons-nous aux outils permettants d’analyser les en-têtes HTTP.

Des outils d’analyse d’en-têtes HTTP

Connaître l’état de l’en-tête HTTP d’une page peut s’avérer utile. Il est parfois nécessaire de vérifier si une redirection que vous avez mise en place est correctement effectuée. Afin d’analyser vos en-têtes HTTP ou de les modifier, vous aurez besoin de quelques outils :

Cinq services en ligne, simples à utiliser, délivrant des informations plus ou moins complètes :

  • Analyse d’en-têtes HTTP BritoWeb : l’analyse de l’url se fait rapidement mais les informations d’en-têtes HTTP sont basiques.
  • Server Header Checker : un service réactif permettant également d’obtenir les informations de base.
  • WeBuildPages : un autre outil qui renvoie les mêmes informations que le précédent service.
  • Url Info : un service d’analyse de liens qui renvoie, en plus des informations sur l’en-tête, des informations sur les images et les liens contenu dans la page analysée.
  • Web-Sniffer : plus complet, ce service agit comme un serveur proxy qui vous permet de visualiser toujours les informations liées à l’en-tête, les informations demandées lors de la requête, ainsi que le contenu du code source de la page analysée. La requête est lancée après avoir coché différentes options.

Trois extensions vraiment très pratiques :

  • Deux extensions Firefox permettant d’obtenir des informations précises sur l’en-tête HTTP de la page en cours : Live HTTP Header et httpFox.
  • Une extension Microsoft remplissant les mêmes fonctions que le plugin Firefox : IE HTTP Headers.

Il est également possible de recourir à un logiciel simulant le passage d’un crawler comme le ferait Googleboot. Les logiciels de type Xenu (ou Integrity pour Macintosh) permettent de voir rapidement les codes d’état HTTP. Vous pourrez également obtenir la liste des liens cassés ou ignorés ainsi que des tas d’autres informations concernant le poids des pages ou le niveau de profondeur des pages importantes.

Les cinq classes de codes d’état HTTP 

1xx : Codes d’information

Codes d’état qui indiquent une réponse provisoire et qui attendent que le demandeur intervienne pour poursuivre.

100

Continuer
Continue

Le demandeur doit poursuivre sa demande. Le serveur renvoie ce code pour indiquer qu’il a reçu la première partie d’une demande et qu’il attend la suite.

101

Changement de protocoles
Switching Protocols Le demandeur a envoyé une demande de modification des protocoles au serveur et le serveur confirme qu’il va la traiter.

2xx : Codes de succès

Codes d’état qui indiquent que le serveur a traité correctement la requête.

200

Réussite
OK Le serveur a traité la demande correctement. En général, cela signifie que le serveur a fourni la page demandée. Si cet état s’affiche pour votre fichier robots.txt, cela signifie que le robot Googlebot l’a extrait correctement.

201

Créé
Created La demande a été traitée et le serveur a créé une ressource.

202

Accepté
Accepted Le serveur a accepté la demande, mais ne l’a pas encore traitée.

203

Information non certifiée
Non-Authoritative Information Le serveur a traité correctement la demande, mais il renvoie des informations qui proviennent peut-être d’une autre source.

204

Pas de contenu
No Content Le serveur a traité correctement la demande, mais ne renvoie aucun contenu.

205

Contenu réinitialisé
Reset Content Le serveur a traité correctement la demande, mais ne renvoie aucun contenu. À la différence d’une réponse 204, cette réponse nécessite de la part du demandeur qu’il réinitialise le document affiché (par exemple, effacer un formulaire pour insérer de nouvelles données).

206

Contenu partiel
Partial Content Le serveur a traité correctement une requête GET partielle.

3xx : Codes de redirection

Cette classe de messages précise que le client doit provoquer une action complémentaire pour que la requête puisse être conduite jusqu’à sa résolution finale. L’action peut être déclenchée par l’utilisateur final si et seulement si la méthode invoquée était GET ou HEAD. Un client ne peut automatiquement rediriger une requête plus de 5 fois. Il est supposé, si cela arrive, que la re-direction s’effectue selon une boucle infinie.

Une autre action est nécessaire pour traiter la requête. Ces codes d’état sont souvent utilisés dans le cadre de la redirection. Google conseille d’utiliser au maximum cinq redirections pour chaque requête. Pour vérifier si le robot Googlebot rencontre des difficultés pour explorer les pages qui ont été redirigées, utilisez les Outils pour les webmasters. La page Erreurs d’exploration de l’onglet Diagnostics répertorie les URL que le robot Googlebot n’a pas été en mesure d’explorer en raison d’erreurs de redirection.

300

Choix multiples
Multiple Choices Le serveur propose différentes actions pour la demande. Il peut choisir une action en fonction du demandeur (user-agent) ou présenter une liste afin que le demandeur choisisse une opération à effectuer.

301

Changement d’adresse définitif
Moved Permanently La page demandée a été déplacée de manière définitive vers un autre emplacement. Lorsque le serveur renvoie cette réponse (comme réponse à une requête GET ou HEAD), il redirige automatiquement le demandeur vers ce nouvel emplacement. Vous devez utiliser ce code afin que le robot Googlebot puisse savoir quand une page ou un site est déplacé de manière permanente vers un nouvel emplacement.

302

Changement d’adresse temporaire
Moved Temporarialy Le serveur est en train de répondre à la requête à l’aide d’une page provenant d’un autre emplacement, mais le demandeur doit continuer à utiliser l’emplacement d’origine pour toute requête ultérieure. Ce code est similaire à un code 301 pour une demande GET ou HEAD. Il redirige automatiquement le demandeur vers un autre emplacement. Ne l’utilisez pas pour indiquer au robot Googlebot qu’une page ou un site a été déplacé, car celui-ci continuerait à explorer et à indexer l’emplacement d’origine.

303

Afficher les autres emplacements
See Other Le serveur renvoie ce code lorsque le demandeur doit formuler une requête GET distincte vers un autre emplacement afin d’extraire la réponse. Pour toutes les requêtes autres que les requêtes HEAD, le serveur redirige automatiquement le demandeur vers le nouvel emplacement.

304

Non modifié
Not Modified

La page demandée n’a pas été modifiée depuis la dernière demande. Lorsque le serveur renvoie cette réponse, il ne renvoie pas le contenu de la page.
Vous devez configurer votre serveur afin qu’il renvoie cette réponse (appelée en-tête HTTP If-Modified-Since) lorsqu’une page n’a pas été modifiée depuis la dernière fois que le demandeur l’a appelée. Cette fonctionnalité permet de limiter la consommation en bande passante et les ressources exploitées puisque votre serveur prévient le robot Googlebot lorsqu’une page n’a pas été modifiée depuis la dernière exploration.

305

Utiliser le serveur proxy
Use Proxy Le demandeur peut accéder à la page souhaitée uniquement à l’aide d’un serveur proxy. Lorsque le serveur renvoie cette réponse, il indique également le serveur proxy que le demandeur doit utiliser.

306

Inutilisé
[Unused] Réservé. N’est pas employé à ce jour.

307

Redirection temporaire
Temporary Redirect Le serveur est en train de répondre à la requête à l’aide d’une page provenant d’un autre emplacement, mais le demandeur doit continuer à utiliser l’emplacement d’origine pour toute requête ultérieure. Ce code est similaire à un code 301 pour une demande GET ou HEAD. Il redirige automatiquement le demandeur vers un autre emplacement. Ne l’utilisez pas pour indiquer au robot Googlebot qu’une page ou un site a été déplacé, car celui-ci continuerait à explorer et à indexer l’emplacement d’origine.

4xx : Code d’erreur client

Ces codes d’état indiquent qu’une erreur s’est probablement glissée dans la demande et que le serveur est par conséquent dans l’incapacité de traiter celle-ci.

400

Demande erronée
Bad Request Le serveur ne comprend pas la syntaxe de la demande.

401

Non autorisé
Unauthorized La demande requiert une authentification. Le serveur renvoie cette réponse si la page nécessite une connexion préalable.

402

Paiement requis
Payment Required Accès au document soumis au paiement

403

Interdit
Forbidden Le serveur refuse de traiter la requête. Si le robot Googlebot reçoit ce code d’état après avoir tenté d’explorer des pages valides de votre site (cela est indiqué sur la page Exploration du Web sous Diagnostic des Outils pour les webmasters), votre serveur ou votre hôte bloque peut-être l’accès de Googlebot.

404

Introuvable
Not Found Le serveur ne trouve pas la page demandée. Il renvoie souvent ce code si la requête vise une page dont il ne dispose pas.
Si vous ne possédez pas de fichier robots.txt sur votre site, il est normal que cet état apparaisse sur la page robots.txt de l’onglet Diagnostic dans les Outils Google pour les webmasters. En revanche, si vous disposez d’un tel fichier, alors il est probable que votre fichier robots.txt soit nommé de manière incorrecte ou soit mal placé (Il doit se trouver au plus haut niveau du domaine et être nommé robots.txt).
Si cet état s’affiche pour des URL que le robot Googlebot essaie d’explorer (sur la page d’erreurs HTTP de l’onglet Diagnostic), il est probable que Googlebot a suivi un lien incorrect à partir d’une autre page (un ancien lien ou un lien mal orthographié).

405

Méthode non autorisée
Method Not Allowed La méthode spécifiée dans la demande n’est pas autorisée.

406

Non autorisé
Not Acceptable La page demandée ne peut pas renvoyer les caractéristiques de contenu exigées.

407

Authentification par proxy obligatoire
Proxy Authentication Required Ce code d’état est identique au code 401 (Non autorisé), mais indique que le demandeur doit s’authentifier à l’aide d’un serveur proxy. Lorsque le serveur renvoie cette réponse, il indique également le serveur proxy que le demandeur doit utiliser.

408

Expiration du délai de la demande
Request Timeout Le délai d’attente de la demande par le serveur a expiré.

409

Conflit
Conflict Le serveur a rencontré un conflit lors du traitement de la demande. Il doit inclure des informations sur le conflit dans la réponse. Le serveur peut renvoyer ce code en réponse à une requête PUT entrant en conflit avec une requête précédente. Dans ce cas, une liste des différences entre les deux requêtes est également fournie.

410

Déplacé
Gone Le serveur renvoie cette réponse lorsque la ressource invoquée a été déplacée de manière définitive. Ce code est identique au code 404 (Introuvable), mais il est parfois utilisé à la place de ce dernier pour signaler des ressources qui existaient auparavant. Si la ressource a été déplacée de manière définitive, utilisez un code 301 pour spécifier son nouvel emplacement.

411

Longueur obligatoire
Length Required
Le serveur n’acceptera pas la demande si l’en-tête Content-Length (taille du contenu) n’est pas correct.

412

Échec des conditions préalables
Precondition Failed Le serveur ne respecte pas l’une des conditions préalables que le demandeur a insérées dans la requête.

413

Entité de la demande trop volumineuse
Request Entity Too Large Le serveur ne peut pas traiter la demande, parce qu’elle est trop volumineuse.

414

L’URI requis est trop long
Request-URL Too Long L’URI demandé (en général, une URL) est trop long pour que le serveur puisse le traiter.

415

Type de support non pris en charge
Unsupported Media Type Le format de la demande n’est pas pris en charge par la page demandée.

416

La plage requise n’est pas correcte
Requested Range Not Satisfiable Le serveur renvoie ce code d’état si la demande vise une plage qui n’est pas disponible pour la page.

417

Échec de l’attente
Expectation Failed Le comportement prévu pour le serveur n’est pas supporté.

5xx : Code d’erreur serveur

Ces codes d’état indiquent que le serveur a rencontré une erreur interne lors du traitement de la requête. Ce type d’erreur concerne en général le serveur lui-même et non la requête.

500

Erreur interne du serveur
Internal Server Error Le serveur a rencontré une erreur et ne peut donc pas traiter la demande.

501

Non implémenté
Not Implemented Le serveur n’est pas doté de la fonctionnalité nécessaire pour traiter la demande. Il renvoie ce code lorsque, par exemple, il ne reconnaît pas la méthode de demande.

502

Passerelle erronée
Bad Gateway Le serveur jouait le rôle de passerelle ou de serveur proxy et a reçu une réponse incorrecte du serveur en amont.

503

Service non disponible
Service Unavailable Le serveur est temporairement indisponible (il est surchargé ou en cours de maintenance). En général, cette situation est passagère.

504

Expiration du délai de la passerelle
Gateway Timeout Le serveur jouait le rôle de passerelle ou de serveur proxy et n’a pas reçu la requête dans les délais de la part du serveur en amont.

505

Version HTTP non prise en charge
HTTP Version Not Supported Le serveur ne prend pas en charge la version du protocole HTTP utilisée dans la demande.

Sources : Google, Wikipedia.

Les codes d’erreur les plus fréquents, par ordre décroissant

Erreur HTTP 500 (internal server error) : code d’erreur survenant lorsque le serveur web qui héberge le site rencontre des problèmes internes, comme par exemple une surcharge temporaire.

Erreur HTTP 404 (not found) : code d’erreur survenant lorsqu’on tente d’accéder à une page ou à un fichier qui n’existe pas pour plusieurs raisons : url cassée, contenu déplacé, supprimé, etc…

Erreur HTTP 403 (forbidden) : code d’erreur similaire à la 401, sauf qu’ici, aucune possibilité de login/password n’apparaît. L’accès au contenu est tout simplement interdit.

Erreur HTTP 400 (bad request) : code d’erreur survenant lorsque la requête émise par votre application web (comme par exemple votre navigateur) est erronnée.

Erreur HTTP 401 (unauthorized) : code d’erreur survenant lorsqu’un internaute tente d’accéder à une page web dont l’accès est restreint. De ce fait, l’accès à la source lui est refusé.

Source : Le top 5 des erreurs HTTP rencontrées selon Google.

——
Pour tous renseignements complémentaires, contactez-nous :
www.maccimum.fr (communication globale, tous supports, tous médias).
——