Comment fonctionne cette vérification
Cette vérification n'agit que si ton site envoie déjà l'en-tête Referrer-Policy ; s'il manque complètement, c'est le scanner d'en-têtes qui le signale. Scanaris lit la valeur et, si elle contient unsafe-url ou no-referrer-when-downgrade, ouvre un constat de sévérité faible avec la valeur exacte. Toute autre valeur (strict-origin-when-cross-origin, no-referrer, same-origin, origin, strict-origin) est acceptée. Autrement dit, il ne mesure pas que tu as l'en-tête, mais que celui que tu as ne laisse pas fuir l'URL complète.
Ce qu'est le referer et ce qui fuit
Chaque fois qu'un utilisateur clique sur un lien vers un autre site, ou que ta page charge une image ou un script d'un autre domaine, le navigateur envoie à la destination un en-tête Referer avec l'URL de la page d'où il vient. La politique de referer décide quelle part de cette URL est envoyée. Avec unsafe-url, l'URL complète, chemin et paramètres compris, même si la destination est en HTTP. Avec no-referrer-when-downgrade, l'URL complète vers toute destination HTTPS ; c'était le comportement par défaut des navigateurs jusqu'en 2020, d'où sa présence dans beaucoup de vieilles configurations. Ce qui fuit, ce sont des choses comme /dashboard/factures/8841, /reset-password?token=..., /recherche?q=licenciement ou l'identifiant d'un document partagé : tout ce qui se trouve dans l'URL de l'utilisateur arrive aux régies publicitaires, aux services d'analyse et à tout site externe vers lequel tu fais un lien.
Comment corriger
La valeur recommandée pour presque tout site :
Referrer-Policy: strict-origin-when-cross-origin
Elle envoie l'URL complète au sein de ton propre domaine (ton outil d'analyse continue de fonctionner), seulement l'origine (https://tondomaine.com) aux autres domaines, et rien si la destination est en HTTP. C'est la valeur par défaut des navigateurs modernes, donc en la fixant explicitement tu ne fais que figer ce qu'ils font déjà. Si tu ne veux pas que quiconque sache d'où vient le visiteur, no-referrer est encore plus strict.
- Nuxt : dans
routeRulesdenuxt.config, sous la règle'/**'. - Next.js : dans la fonction
headers()denext.config.js. - Vercel : dans
vercel.json. Netlify : dans_headers. - nginx :
add_header Referrer-Policy "strict-origin-when-cross-origin" always;. Apache :Header always set Referrer-Policy "strict-origin-when-cross-origin". - Express :
helmet.referrerPolicy({ policy: 'strict-origin-when-cross-origin' }).
Si un lien précis a besoin d'un autre comportement (par exemple un programme d'affiliation qui exige le referer complet), règle-le sur ce lien avec l'attribut referrerpolicy au lieu d'assouplir la politique de tout le site.
Vérifie que c'est corrigé
curl -sI https://tondomaine.com | grep -i referrer-policy
Ça doit afficher strict-origin-when-cross-origin ou no-referrer. Vérifie aussi qu'il n'y a pas de balise <meta name="referrer"> dans le HTML avec une autre valeur : la meta a priorité sur l'en-tête pour cette page.
Questions fréquentes
Vais-je perdre des données dans Google Analytics ou mon outil de statistiques ?
Non. L'analyse de ton propre site est alimentée par le script que tu inclus, pas par le referer. Ce qui change, c'est ce que voient les sites vers lesquels tu fais un lien : au lieu de la page exacte, ils verront ton domaine. Pour tes propres pages internes, le referer complet est conservé.
Mon site n'a pas d'URL avec des données sensibles.
Aujourd'hui. Un lien de réinitialisation de mot de passe, un identifiant de commande ou un paramètre de recherche apparaissent dès que le site grandit. Fixer la bonne politique coûte une ligne et n'a aucun effet secondaire.
Pourquoi no-referrer-when-downgrade était-il la valeur par défaut ?
Parce que dans les premières années du web, le referer complet était jugé utile et HTTPS était minoritaire. Chrome, Firefox et Safari ont changé la valeur par défaut en strict-origin-when-cross-origin entre 2020 et 2021, précisément à cause des fuites décrites dans ce guide. Tous les en-têtes liés sont expliqués dans les en-têtes HTTP pour les humains.