Referrer-Policy

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

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 (default)
C'est le comportement par défaut si aucune valeur n'est spécifiée ou quelle celle donnée est invalide. L'origin, le path, et la querystring de 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 quand si la destination est moins sécurisée (HTTPS vers HTTP).
Les navigateurs tentent d'adopter une valeur par défaut plus stricte, précisément strict-origin-when-cross-origin (voir https://github.com/whatwg/fetch/pull/952), envisagez d'utiliser cette valeur (ou une autre encore plus stricte) si possible si vous définissez la valeur de Referrer-Policy.
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érent https://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
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 des adresses externes (HTTPS vers HTTPS) et n'envoie rien 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é.

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">

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">

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 HTTP Referrer-Policy dans la réponse de la feuille de styles CSS.
  • Pour les éléments <style> ou attributs style, 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.

Spécifier plusieurs valeurs n'est supporté que dans l'en-tête HTTP Referrer-Policy et non dans l'attribut referrerpolicy.

Spécifications

Spécification Statut
Referrer Policy Brouillon de l'éditeur.

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung Internet
Referrer-PolicyChrome Support complet 56Edge Support complet 79Firefox Support complet 50IE Aucun support NonOpera Support complet 43Safari Support complet 11.1WebView Android Support complet 56Chrome Android Support complet 56Firefox Android Support complet 50Opera Android Support complet 43Safari iOS Aucun support NonSamsung Internet Android Support complet 7.2
same-originChrome Support complet 61Edge Support complet 79Firefox Support complet 52IE Aucun support NonOpera Support complet 48Safari Support complet 11.1WebView Android Support complet 61Chrome Android Support complet 61Firefox Android Support complet 52Opera Android Support complet 45Safari iOS Aucun support NonSamsung Internet Android Support complet 7.2
strict-originChrome Support complet 61Edge Support complet 79Firefox Support complet 52IE Aucun support NonOpera Support complet 48Safari Support complet 11.1WebView Android Support complet 61Chrome Android Support complet 61Firefox Android Support complet 52Opera Android Support complet 45Safari iOS Aucun support NonSamsung Internet Android Support complet 7.2
strict-origin-when-cross-originChrome Support complet 61Edge Support complet 79Firefox Support complet 52IE Aucun support NonOpera Support complet 48Safari Support complet 11.1WebView Android Support complet 61Chrome Android Support complet 61Firefox Android Support complet 52Opera Android Support complet 45Safari iOS Aucun support NonSamsung Internet Android Support complet 7.2

Légende

Support complet  
Support complet
Aucun support  
Aucun support
  • Version 53 et plus, Gecko offre la possibilité aux utilisateurs de définir leur valeur par défaut de Referrer-Policy dans about:config, l'option s'appelant network.http.referer.userControlPolicy.
  • Version 59 et plus (Voir #587523), il a été remplacé par network.http.referer.defaultPolicy et network.http.referer.defaultPolicy.pbmode.

Les valeurs permises sont :

  • 0 — no-referrer
  • 1 — same-origin
  • 2 — strict-origin-when-cross-origin
  • 3 — no-referrer-when-downgrade (par défaut)

Voir aussi