Résultat
| En-tête | État | Pourquoi |
|---|
Comment utiliser l’outil
Collez l’adresse d’une page, d’un PDF ou d’une image et cliquez sur « Analyser ». L’outil envoie une requête GET, suit jusqu’à dix redirections et affiche la chaîne obtenue : le code et l’adresse de chaque étape, puis la réponse finale. Le tableau reprend ensuite les en-têtes utiles, rangés en quatre familles : SEO et exploration, cache, compression, sécurité.
Chaque ligne porte un état. « Présent » veut dire que l’en-tête est là et ne pose pas de problème connu, « Absent » qu’il manque, ce qui est parfois normal, et « À revoir » qu’il est là mais que sa valeur mérite un examen. La colonne de droite dit pourquoi, avec le numéro de la source. L’outil ne calcule aucune note globale : un en-tête de sécurité absent pèse peu sur une page vitrine sans formulaire, beaucoup sur un espace client. Sous le tableau, la liste complète des en-têtes reçus, dans l’ordre et doublons compris.
Les en-têtes qui comptent pour le SEO
Les en-têtes ne se voient pas dans la page, mais Googlebot les lit avant tout le reste. Le plus lourd de conséquences est X-Robots-Tag. Google accepte dans cet en-tête toutes les règles de la balise meta robots : noindex, nofollow, nosnippet, max-image-preview et les autres. Plusieurs en-têtes X-Robots-Tag peuvent se cumuler, une même ligne peut viser un robot précis (« googlebot: noindex »), et en cas de règles contradictoires, la plus restrictive s’applique.1 Un noindex posé ici par un réglage de serveur oublié retire la page des résultats sans que rien ne le montre dans le code HTML.
Ces règles ne sont lues que si le robots.txt laisse le robot explorer la page.1 Bloquer une page dans les règles du robots.txt et lui donner un noindex en même temps revient donc à rendre ce noindex invisible.
L’en-tête Link peut porter une canonique : « Link: <https://www.exemple.fr/livre-blanc.pdf>; rel="canonical" ». Google la prend en compte pour la recherche web, y compris sur des fichiers sans HTML comme les PDF, et demande une adresse absolue, comme dans la balise. Il recommande aussi de choisir une seule méthode : donner une canonique dans l’en-tête et une autre dans le HTML est une source d’erreurs.2
Content-Type annonce le type du document et, par son paramètre charset, son encodage de caractères, par exemple « text/html; charset=utf-8 ».3 Vary liste les en-têtes de la requête qui changent la réponse ; les caches gardent une version par valeur, et « Vary: * » rend la réponse impossible à mettre en cache.4 Google associe « Vary: user-agent » au service dynamique, où une même adresse sert un HTML différent au mobile et à l’ordinateur.5
ETag, Last-Modified et exploration conditionnelle
Dans un billet de décembre 2024, Gary Illyes, de Google, rapporte qu’environ 0,026 % des récupérations de Google pouvaient être servies depuis un cache il y a dix ans, contre 0,017 % aujourd’hui. Il explique aussi qu’autoriser la mise en cache peut aider un grand site au contenu peu changeant à être exploré plus efficacement.6
Le mécanisme repose sur deux paires d’en-têtes. Le serveur envoie un ETag, une empreinte de la version de la page ; au passage suivant, le robot la renvoie dans If-None-Match. Si rien n’a changé, le serveur répond 304 Not Modified, sans corps : il ne calcule pas la page et n’envoie rien. Last-Modified et If-Modified-Since font la même chose avec une date. Google recommande ETag, moins sujet aux erreurs puisque sa valeur n’a pas de format imposé, et conseille de mettre les deux quand c’est possible. Pour Last-Modified, il recommande le format « Fri, 4 Sep 1998 19:15:56 GMT » et suggère d’y joindre Cache-Control: max-age, la durée pendant laquelle le contenu ne devrait pas changer.6 Quand les deux en-têtes sont présents, les robots de Google se fient à ETag.7
Google laisse au site le soin de décider ce qui compte comme une modification : selon le même billet, changer l’année du copyright en bas de page ne mérite probablement pas un nouvel ETag.6
Le cache : Cache-Control, Expires, Age et CDN
Cache-Control porte les consignes de cache. max-age fixe la durée de fraîcheur en secondes, s-maxage la remplace pour les caches partagés comme un CDN, no-cache autorise le stockage mais impose une revalidation avant chaque usage, no-store interdit tout stockage, private réserve la réponse au navigateur.8 web.dev réserve la durée d’un an (max-age=31536000) aux fichiers dont l’adresse change à chaque version, comme une feuille de style au nom horodaté, et conseille no-cache pour les ressources à revalider avant chaque usage.9 Une page HTML garde son adresse : la mettre en cache pour un an, c’est risquer que les visiteurs déjà venus ne voient pas ses mises à jour. L’outil le signale.
Expires donne une date de péremption, et il est ignoré dès que Cache-Control contient max-age ou s-maxage.10 Age indique depuis combien de secondes la copie est gardée par un cache intermédiaire ; une valeur de 0 signale en général une réponse tout juste demandée au serveur d’origine.11
Les CDN et les hébergeurs ajoutent leurs propres en-têtes : cf-cache-status chez Cloudflare, x-cache ou x-cache-status ailleurs. Chez Cloudflare, HIT signifie que la ressource était dans le cache, MISS qu’elle a été demandée au serveur d’origine, DYNAMIC qu’elle a été jugée non cacheable.12 Le même site peut répondre MISS puis HIT à quelques secondes d’écart : relancez l’analyse pour voir le cache se remplir.
La compression
Content-Encoding dit comment le corps de la réponse a été compressé. MDN recommande de compresser autant que possible, sauf les formats déjà compressés comme le JPEG ou le ZIP, que la recompression peut alourdir.13 Les robots de Google acceptent gzip, deflate et Brotli (br), et annoncent ce qu’ils savent lire dans leur en-tête Accept-Encoding.7 L’outil demande lui aussi une réponse compressée : une page HTML qui revient sans Content-Encoding est servie non compressée, ce qui l’alourdit pour les visiteurs comme pour les robots.
Les en-têtes de sécurité
Ces en-têtes disent au navigateur comment protéger les visiteurs de la page. L’OWASP Secure Headers Project tient à jour une configuration de référence et la liste des en-têtes devenus obsolètes ; l’outil s’appuie sur ses recommandations.14
- Strict-Transport-Security (HSTS). Oblige le navigateur à revenir en HTTPS pendant max-age secondes. Envoyé en HTTP, il est ignoré. Pour figurer dans les listes de préchargement des navigateurs, max-age doit valoir au moins un an, avec includeSubDomains.15 OWASP propose deux ans.14
- Content-Security-Policy (CSP). Limite les sources que la page peut charger, ce qui protège des failles de type XSS. La variante Report-Only signale les violations sans rien bloquer : elle sert aux essais.16
- X-Content-Type-Options. Sa seule valeur, nosniff, oblige le navigateur à suivre le Content-Type déclaré et à refuser un script ou une feuille de style servis avec le mauvais type.17
- X-Frame-Options ou frame-ancestors. Empêchent un autre site d’intégrer la page dans un cadre pour détourner les clics. X-Frame-Options accepte DENY et SAMEORIGIN ; avec ALLOW-FROM, les navigateurs récents ignorent tout l’en-tête.18 La directive frame-ancestors de la CSP fait le même travail, avec plus de souplesse.19
- Referrer-Policy. Règle ce que la page transmet de son adresse aux sites vers lesquels elle mène. Sans cet en-tête, les navigateurs appliquent strict-origin-when-cross-origin ; unsafe-url transmet l’adresse complète des pages HTTPS, même à des sites en HTTP.20
- Permissions-Policy. Autorise ou refuse à la page et à ses cadres des fonctions du navigateur comme la caméra ou la géolocalisation.21 Son prédécesseur, Feature-Policy, est obsolète.14
L’outil relève aussi les cookies déposés. Leur valeur n’est jamais affichée, seulement leurs attributs : Secure (envoi en HTTPS seulement), HttpOnly (illisible par le JavaScript de la page) et SameSite, dont la valeur None exige Secure.22 Enfin, il signale X-XSS-Protection, qu’OWASP classe parmi les en-têtes obsolètes et conseille de mettre à 0, ainsi que les en-têtes qui dévoilent la technique ou la version du serveur, comme X-Powered-By, qu’OWASP conseille de retirer.14
Ce que l’outil voit, et ce qu’il ne voit pas
La requête part du serveur de nemociment.fr, sous un nom de navigateur (user-agent) qui la présente comme un outil et non comme Googlebot. Un site qui répond différemment selon le robot, le pays ou un pare-feu peut donc envoyer d’autres en-têtes à Google. Seuls les en-têtes de la réponse finale sont analysés ; ceux des redirections intermédiaires n’apparaissent que par leur code. Les consignes posées dans le HTML, balise meta robots ou balise canonique, ne sont pas lues ici.
La lecture des en-têtes fait partie de la vérification technique d’un site avant de travailler son contenu : un noindex envoyé par le serveur suffit à retirer une page des résultats, quel que soit son contenu. Sur un site entier, avec ses modèles de pages, ses fichiers et ses règles de serveur, cet examen se fait page type par page type, et c’est l’un des premiers points de l’audit que je mène pour mes clients.
Questions fréquentes
Qu’est-ce que l’en-tête X-Robots-Tag ?
C’est l’équivalent de la balise meta robots, envoyé dans la réponse HTTP. Il accepte les mêmes règles (noindex, nofollow, nosnippet...), peut viser un robot précis et s’applique à tout type de fichier, PDF et images compris. Google ne le lit que si le robots.txt laisse explorer la page.1
Comment voir les en-têtes HTTP d’une page dans Chrome ?
Ouvrez les outils de développement (F12), onglet Réseau, rechargez la page puis cliquez sur la première ligne : les en-têtes de la réponse figurent dans l’onglet En-têtes. Cet outil montre la même chose depuis un serveur, sans les cookies ni le cache de votre navigateur, et commente ce qui compte.
ETag ou Last-Modified : lequel choisir pour Googlebot ?
Quelle valeur de Cache-Control pour une page HTML ?
web.dev conseille no-cache pour les ressources qui doivent être revalidées avant chaque usage, et réserve max-age=31536000 aux fichiers dont l’adresse change à chaque version.9 Une page HTML garde son adresse : no-cache, ou un max-age court, accompagné d’un ETag, lui permet d’être à jour sans être retéléchargée à chaque visite.
Faut-il garder X-Frame-Options si la CSP contient frame-ancestors ?
Quelle configuration de sécurité OWASP propose-t-il ?
Sa configuration de référence comprend notamment Strict-Transport-Security: max-age=63072000; includeSubDomains, X-Frame-Options: deny, X-Content-Type-Options: nosniff, Referrer-Policy: no-referrer et une Content-Security-Policy de départ.14 Une CSP doit être adaptée aux scripts du site ; la variante Report-Only permet de l’essayer sans rien bloquer.16
Sources
Les passages de cette page et les verdicts de l’outil qui s’appuient sur une source renvoient à l’une de ces références.
- Google, « Spécifications des balises meta pour les robots » (dont l’en-tête X-Robots-Tag), Google Search Central. developers.google.com ↑
- Google, « Spécifier une URL canonique avec rel="canonical" et d’autres méthodes », Google Search Central. developers.google.com ↑
- MDN, en-tête Content-Type. developer.mozilla.org ↑
- MDN, en-tête Vary. developer.mozilla.org ↑
- Google, « Bonnes pratiques concernant l’indexation axée sur le mobile », Google Search Central. developers.google.com ↑
- Gary Illyes, « Crawling December: HTTP caching », blog Google Search Central, 9 décembre 2024. developers.google.com ↑
- Google, présentation des robots d’exploration et des extracteurs de Google (compression, mise en cache HTTP). developers.google.com ↑
- MDN, en-tête Cache-Control. developer.mozilla.org ↑
- web.dev, « Prevent unnecessary network requests with the HTTP Cache ». web.dev ↑
- MDN, en-tête Expires. developer.mozilla.org ↑
- MDN, en-tête Age. developer.mozilla.org ↑
- Cloudflare, « Cloudflare cache responses » (valeurs de cf-cache-status). developers.cloudflare.com ↑
- MDN, en-tête Content-Encoding. developer.mozilla.org ↑
- OWASP Secure Headers Project : en-têtes de réponse, bonnes pratiques et en-têtes à retirer. owasp.org ↑
- MDN, en-tête Strict-Transport-Security. developer.mozilla.org ↑
- MDN, en-tête Content-Security-Policy. developer.mozilla.org ↑
- MDN, en-tête X-Content-Type-Options. developer.mozilla.org ↑
- MDN, en-tête X-Frame-Options. developer.mozilla.org ↑
- MDN, directive CSP frame-ancestors. developer.mozilla.org ↑
- MDN, en-tête Referrer-Policy. developer.mozilla.org ↑
- MDN, en-tête Permissions-Policy. developer.mozilla.org ↑
- MDN, en-tête Set-Cookie. developer.mozilla.org ↑