Zasada Polecającego (Referrer-Policy)

HTTP header Referrer-Policy kontroluje, w jakim zakresie informacje dot. polecającego (referrera) (wysyłane poprzez nagłówek Referer) powinny być zawarte w żądaniu

Typ nagłówka Response header
Forbidden header name nie

Składnia

Originalna nazwa nagłówka, Referer, to błędnie zapisane słowo "referrer" ("polecający"). Nagłówek Referrer-Policy nie zawiera tej literówki.

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

Dyrektywy

no-referrer
Nagłówek Referer zostanie całkowicie pominięty. Żadna informacja dot. polecającego nie zostanie wysłana w żądaniu.
no-referrer-when-downgrade (domyślna)
Zachowanie domyślne, jeśli zasada nie została określona lub jeśli wartość jest niepoprawna. origin, path oraz querystring URLu są wysyłane jako polecający, podczas gdy poziom bezpieczeństwa protokołu pozostaje na tym samym poziomie (HTTP→HTTP, HTTPS→HTTPS) lub jest bezpieczniejszy (HTTP→HTTPS), ale nie gdy destynacja jest mniej bezpieczna (HTTPS→HTTP).
origin
Wysyła jedynie origin dokumentu jako jego polecającego. Przykładowo, dokument pod adresem https://example.com/page.html wyśle referrer brzmiący: https://example.com/.
origin-when-cross-origin
Wyśle origin, ścieżkę i string z zapytaniem podczas obsługi żądania same-origin, w innych przypadkach wyśle jedynie origin dokumentu.
same-origin
Referrer zostanie wysłany do originów same-site, natomiast żądania cross-origin nie będą zawierać informacji o referrerze.
strict-origin
Wyśle origin dokumentu jako referrer, jeśli poziom bezpieczeństwa protokołu zostaje na tym samym poziomie (HTTPS→HTTPS), nie wyśle, jeśli poziom bezpieczeństwa destynacji jest niższy (HTTPS→HTTP).
strict-origin-when-cross-origin
Wyśle origin, ścieżkę i string z zapytaniem podczas obsługi żądania same-orign, wyśle jedynie origin, jeśli poziom bezpieczeństwa protokołu pozostaje taki sam (HTTPS→HTTPS), natomiast nie wyśle nagłówka do destynacji o niższym poziomie bezpieczeństwa (HTTPS→HTTP).
unsafe-url
Wyśle origin, ścieżkę i string z zapytaniem podczas obsługi jakiegokolwiek zdarzenia, niezależnie od bezpieczeństwa.

Niniejsza zasada może skutkować wyciekiem potencjalnie prywatnych informacji z URLów zasobów HTTPS do niebezpiecznych originów. Mocno się zastanów, zanim wybierzesz to ustawienie.

Integracja z HTMLem

Możesz ustawić zasady polecającego także w HTMLu. Przykładowo, możesz ustawić zasadę polecającego dla całego dokumentu poprzez konfigurację elementu <meta> z name równe referrer:

<meta name="referrer" content="origin">

Lub ustawić dla określonych żądań poprzez atrybut referrerpolicy na elementach <a>, <area>, <img>, <iframe>, <script> czy <link>:

<a href="http://example.com" referrerpolicy="origin">

Alternatywnie, w przypadku elementu a, area, bądź link możesz ustawić relację linku na noreferrer :

<a href="http://example.com" rel="noreferrer">

Integracja z CSSem

CSS może przechwytywać zasoby wyszczególnione w arkuszach stylów. Niniejsze zasoby również podlegają zasadzie polecającego:

  • Zewnętrzne arkusze stylów CSS używają domyślnej zasady (no-referrer-when-downgrade) chyba, że jest nadpisana przez nagłówek HTTP Referrer-Policy w odpowiedzi arkusza stylów CSS.
  • Dla elementów <style> lub atrybutów style aplikowana jest zasada właściciela dokumentu.

Przykłady

Zasada Document Nawigacja do Referrer
no-referrer https://example.com/page gdziekolwiek (no referrer)
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 (no referrer)
origin https://example.com/page anywhere 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 (no referrer)
strict-origin https://example.com/page https://mozilla.org https://example.com/
http://example.org (no referrer)
http://example.com/page anywhere 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 (no referrer)
unsafe-url https://example.com/page?q=123 anywhere https://example.com/page?q=123

Określanie zasady awaryjnej

Jeśli chcesz określić zasadę awaryjną na wypadek, gdy pożądana zasada nie jest wspierana przez daną przeglądarkę, użyj listy oddzielonej przecinkiem, gdzie na samym końcu wpisujesz pożądaną zasadę:

Referrer-Policy: no-referrer, strict-origin-when-cross-origin

W przypadku powyższego scenariusza, no-referrer zostanie użyty jedynie, jeśli strict-origin-when-cross-origin nie jest wspierany przez daną przeglądarkę.

Określanie wielu wartości jest wspierane jedynie w nagłówku HTTP Referrer-Policy, nie jest natomiast w atrybucie referrerpolicy.

Specyfikacje

Specyfikacja Status
Zasada Referrera Wersja robocza redaktora

Kompatybilność z przeglądarkami

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
Referrer-PolicyChrome Full support 56Edge No support NoFirefox Full support 50IE No support NoOpera Full support 43Safari Full support 11.1WebView Android Full support 56Chrome Android Full support 56Firefox Android Full support 50Opera Android Full support 43Safari iOS No support NoSamsung Internet Android Full support 7.2
same-originChrome Full support 61Edge No support NoFirefox Full support 52IE No support NoOpera Full support 48Safari Full support 11.1WebView Android Full support 61Chrome Android Full support 61Firefox Android Full support 52Opera Android Full support 45Safari iOS No support NoSamsung Internet Android Full support 7.2
strict-originChrome Full support 61Edge No support NoFirefox Full support 52IE No support NoOpera Full support 48Safari Full support 11.1WebView Android Full support 61Chrome Android Full support 61Firefox Android Full support 52Opera Android Full support 45Safari iOS No support NoSamsung Internet Android Full support 7.2
strict-origin-when-cross-originChrome Full support 61Edge No support NoFirefox Full support 52IE No support NoOpera Full support 48Safari Full support 11.1WebView Android Full support 61Chrome Android Full support 61Firefox Android Full support 52Opera Android Full support 45Safari iOS No support NoSamsung Internet Android Full support 7.2

Legend

Full support  
Full support
No support  
No support
  • Od wersji 53 w górę, Gecko posiada preferencję dostępną w about:config, by móc pozwolić użytkownikom na ustawienie ich domyślnego Referrer-Policy network.http.referer.userControlPolicy.
  • Od wersji 59 w górę (Zobacz: #587523), zastąpiono ją przez network.http.referer.defaultPolicy oraz network.http.referer.defaultPolicy.pbmode.

Dopuszczalne wartości to:

  • 0 — no-referrer
  • 1 — same-origin
  • 2 — strict-origin-when-cross-origin
  • 3 — no-referrer-when-downgrade (domyślna)

Zobacz również