Referrer-Policy
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.
L'en-tête HTTP header Referrer-Policy
contrôle la quantité d'informations sur le référent (referrer) (envoyées par l'en-tête Referer
) incluses dans la requête.
Type d'en-tête | Response header |
---|---|
Forbidden header name | non |
Syntaxe
Note :
Le nom originel de l'en-tête, Referer
, est une faute de frappe du mot anglais "referrer". L'en-tête Referrer-Policy
ne comporte pas cette erreur.
Referrer-Policy: no-referrer Referrer-Policy: no-referrer-when-downgrade Referrer-Policy: origin Referrer-Policy: origin-when-cross-origin Referrer-Policy: same-origin Referrer-Policy: strict-origin Referrer-Policy: strict-origin-when-cross-origin Referrer-Policy: unsafe-url
Directives
no-referrer
-
L'en-tête
Referer
sera entièrement omis. Aucune information sur le référent ne sera envoyée avec les requêtes. no-referrer-when-downgrade
-
L'origine, le chemin et les paramètres de requête (querystring) présents dans l'URL sont envoyés comme référent quand le niveau de sécurité du protocole reste le même (HTTP vers HTTP, HTTPS vers HTTPS) ou s'améliore (HTTP vers HTTPS), mais ne sont pas envoyés si la destination est moins sécurisée que l'origine (HTTPS vers HTTP).
origin
-
N'envoie que l'origin du document comme référent. Par exemple, un document à l'adresse
https://example.com/page.html
enverra le référenthttps://example.com/
. origin-when-cross-origin
-
Envoie l'origine, le chemin et les paramètres de requête pour les requêtes same-origin et seulement l'origine du document dans les autres cas.
same-origin
-
Un référent sera envoyé aux page de même origine, mais des requêtes vers des adresses externes n'enverront aucune information sur le référent.
strict-origin
-
N'envoie que l'origine du document comme référent quand le niveau de sécurité du protocole reste le même (HTTPS vers HTTPS) mais n'envoie rien si la destination est moins sécurisée (HTTPS vers HTTP).
strict-origin-when-cross-origin
(valeur par défaut)-
Envoie l'origine, le chemin et les paramètres de requête pour les requêtes de même origine. N'envoie que l'origine quand le niveau de sécurité du protocole reste le même pour les requêtes vers d'autres origines (HTTPS vers HTTPS) et n'envoie aucun en-tête
Referer
si la destination est moins sécurisée (HTTPS vers HTTP). unsafe-url
-
Envoie l'origine, le chemin et les paramètres de requête pour toutes les requêtes sans tenir compte du niveau de sécurité.
Attention : Cette valeur divulgera des informations potentiellement confidentielles de la part des URL de ressources HTTPS vers des origines non sécurisées. Considérez les conséquences de ce paramétrage avant de vous en servir.
Intégration avec HTML
Vous pouvez aussi définir des règles de référent au sein d'HTML. Par exemple, vous pouvez définir la règle de référent pour le document entier avec un élément <meta>
dont le name est referrer
:
<meta name="referrer" content="origin" />
Ou le définit pour des requêtes spécifiques avec l'attribut referrerpolicy
sur les éléments <a>
, <area>
, <img>
, <iframe>
, <script>
, ou <link>
:
<a href="http://example.com" referrerpolicy="origin"></a>
Autrement, une relation de lien définie à noreferrer
sur un élément a
, area
, ou link
peut être défini :
<a href="http://example.com" rel="noreferrer"></a>
Attention :
Comme vu précédemment, la relation de lien noreferrer
s'écrit sans trait d'union. Toutefois, quand la règle de référent est spécifiée pour le document entier avec un élément <meta>
, il faut mettre le trait d'union : <meta name="referrer" content="no-referrer">
.
Intégration avec CSS
CSS peut demander des ressources référencées dans des feuilles de styles. Ces ressources suivent une règle de référent aussi :
- Les feuilles de styles CSS externes utilisant la règle par défaut (
no-referrer-when-downgrade
), moins qu'elle soit remplacée un l'en-tête HTTPReferrer-Policy
dans la réponse de la feuille de styles CSS. - Pour les éléments
<style>
ou attributsstyle
, la règle de référent du propriétaire du document est utilisée.
Exemples
Règle | Document | Navigation vers | Référent |
---|---|---|---|
no-referrer |
https://example.com/page | n'importe où | (pas de référent) |
no-referrer-when-downgrade |
https://example.com/page | https://example.com/otherpage | https://example.com/page |
https://mozilla.org | https://example.com/page | ||
http://example.org | (pas de référent) | ||
origin |
https://example.com/page | n'importe où | https://example.com/ |
origin-when-cross-origin |
https://example.com/page | https://example.com/otherpage | https://example.com/page |
https://mozilla.org | https://example.com/ | ||
http://example.com/page | https://example.com/ | ||
same-origin |
https://example.com/page | https://example.com/otherpage | https://example.com/page |
https://mozilla.org | (pas de référent) | ||
strict-origin |
https://example.com/page | https://mozilla.org | https://example.com/ |
http://example.org | (pas de référent) | ||
http://example.com/page | n'importe où | http://example.com/ | |
strict-origin-when-cross-origin |
https://example.com/page | https://example.com/otherpage | https://example.com/page |
https://mozilla.org | https://example.com/ | ||
http://example.org | (pas de référent) | ||
unsafe-url |
https://example.com/page?q=123 | n'importe où | https://example.com/page?q=123 |
Spécifier une règle par défaut
Si vous voulez spécifier une règle à appliquer par défaut dans les où la règle voulue n'est pas supportée par les navigateurs, utilisez un liste de valeurs séparées par des virgules avec la règle voulue fournie en dernière position :
Referrer-Policy: no-referrer, strict-origin-when-cross-origin
Ici, no-referrer
ne sera utilisée que si strict-origin-when-cross-origin
n'est pas supportée par le navigateur.
Note :
Spécifier plusieurs valeurs n'est supporté que dans l'en-tête HTTP Referrer-Policy
et non dans l'attribut referrerpolicy
.
Spécifications
Specification |
---|
Referrer Policy # referrer-policy-header |
Compatibilité des navigateurs
BCD tables only load in the browser
Voir aussi
- Référent sur Wikipédia
- En utilisant Fetch :
Request.referrerPolicy
- La directive obsolète
referrer
Obsolète de l'en-têteContent-Security-Policy
. - Same-origin policy
- Tighter Control Over Your Referrers – Mozilla Security Blog