Referrer-Policy

HTTP の Referrer-Policy ヘッダーは、 (Referer ヘッダーによって送られる) リファラー情報をリクエストにどれだけ含めるかを制御します。

ヘッダー種別 レスポンスヘッダー
禁止ヘッダー名 いいえ

構文

元のヘッダー名である Referer は "referrer" という語のスペルミスです。 Referrer-Policy ヘッダーはこのスペルミスをしていません。

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

ディレクティブ

no-referrer
Referer ヘッダー全体が省略されます。リクエストとともにリファラー情報が送られることはありません。
no-referrer-when-downgrade (既定値)
これはポリシーが指定されていない場合や、与えられた値が無効であった場合の既定の動作です。プロトコルのセキュリティ水準が同一である場合 (HTTP→HTTP, HTTPS→HTTPS) または改善される場合 (HTTP→HTTPS) は、 URL のオリジンパスクエリ文字列がリファラーとして送信されますが、低下する場合 (HTTPS→HTTP) は、リファラーは送信されません。
ブラウザーはより厳格な既定値、すなわち strict-origin-when-cross-origin (https://github.com/whatwg/fetch/pull/952 を参照) に移行するよう取り組んでいますが、 Referrerer-Policy を変更する際には、可能であればこの値 (またはより厳格な値) を使用することを検討してください。
origin
文書のオリジンのみがリファラーとして送信されます。
たとえば、 https://example.com/page.html にある文書からは、 https://example.com/ というリファラーが送信されます。
origin-when-cross-origin
同一オリジン間でリクエストを行う場合はオリジン、パス、クエリ文字列を送信しますが、その他の場合は文書のオリジンのみを送信します。
same-origin
同じオリジンにはリファラーが送信されますが、オリジン間リクエストではリファラー情報が送信されません。
strict-origin
プロトコルのセキュリティ水準が同じである場合 (HTTPS→HTTPS) にのみ、文書のオリジンをリファラーとして送信しますが、安全性の劣る移動先 (HTTPS→HTTP) には送信しません。
strict-origin-when-cross-origin
同じオリジン間でリクエストを行う際はオリジン、パス、クエリ文字列を送信し、オリジン間リクエストを行う際にプロトコルのセキュリティレベルが同じ場合 (HTTPS→HTTPS) はオリジンを送信し、安全性の劣る送信先 (HTTPS→HTTP) にはヘッダーを送信しません。
unsafe-url
セキュリティに関係なく、どのリクエストを行った場合でも、オリジン、パス、クエリ文字列を送信します。

このポリシーは、 HTTPS リソースの URL から安全ではないオリジンへプライベートである可能性がある情報を漏洩します。設定する場合は影響をよく検討してください。

HTML との統合

HTML 内でリファラーポリシーを設定することもできます。例えば、 <meta> 要素で namereferrer を設定することで、文書全体のリファラーポリシーを設定することができます。

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

また、 <a>, <area>, <img>, <iframe>, <script>, <link> の各要素の referrerpolicy 属性によって、個別のリクエストに設定することもできます。

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

他に、 noreferrer link 関係a, area, link の各要素に設定することもできます。

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

CSS との統合

CSS はスタイルシートから参照されるリソースにアクセスすることがあります。これらのリソースは同様にリファラーポリシーに従います。

  • 外部 CSS スタイルシートは、 CSS スタイルシートに指定する HTTP ヘッダーを通じて上書きされない限り、既定のポリシー (no-referrer-when-downgrade) を使用します。
  • <style> 要素または style 属性については、所有者の文書のリファラーポリシーが使用されます。

ポリシー 文書 移動先 リファラー
no-referrer https://example.com/page どこへでも (リファラーなし)
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 (リファラーなし)
origin https://example.com/page どこへでも 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 (リファラーなし)
strict-origin https://example.com/page https://mozilla.org https://example.com/
http://example.org (リファラーなし)
http://example.com/page どこへでも 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 (リファラーなし)
unsafe-url https://example.com/page?q=123 どこへでも https://example.com/page?q=123

代替ポリシーの指定

必要なポリシーのブラウザーの対応状況が十分ではなく、代替ポリシーを設定したい場合は、カンマ区切りのリストを使用し、必要なポリシーを最後に指定してください。

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

上記のシナリオでは、 no-referrer はブラウザーが strict-origin-when-cross-origin に対応していない場合のみ使用されます。

複数の値を設定する方法は、 HTTP の Referrer-Policy ヘッダーのみが対応しており、 referrerpolicy 属性では対応していません。

仕様書

仕様書 状態
Referrer Policy 編集者草稿

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
Referrer-PolicyChrome 完全対応 56Edge 完全対応 79Firefox 完全対応 50IE 未対応 なしOpera 完全対応 43Safari 完全対応 11.1WebView Android 完全対応 56Chrome Android 完全対応 56Firefox Android 完全対応 50Opera Android 完全対応 43Safari iOS 未対応 なしSamsung Internet Android 完全対応 7.2
same-originChrome 完全対応 61Edge 完全対応 79Firefox 完全対応 52IE 未対応 なしOpera 完全対応 48Safari 完全対応 11.1WebView Android 完全対応 61Chrome Android 完全対応 61Firefox Android 完全対応 52Opera Android 完全対応 45Safari iOS 未対応 なしSamsung Internet Android 完全対応 7.2
strict-originChrome 完全対応 61Edge 完全対応 79Firefox 完全対応 52IE 未対応 なしOpera 完全対応 48Safari 完全対応 11.1WebView Android 完全対応 61Chrome Android 完全対応 61Firefox Android 完全対応 52Opera Android 完全対応 45Safari iOS 未対応 なしSamsung Internet Android 完全対応 7.2
strict-origin-when-cross-originChrome 完全対応 61Edge 完全対応 79Firefox 完全対応 52IE 未対応 なしOpera 完全対応 48Safari 完全対応 11.1WebView Android 完全対応 61Chrome Android 完全対応 61Firefox Android 完全対応 52Opera Android 完全対応 45Safari iOS 未対応 なしSamsung Internet Android 完全対応 7.2

凡例

完全対応  
完全対応
未対応  
未対応
  • バージョン 53 以降では、 Gecko は about:config の中でユーザーが Referrer-Policy の既定値を設定できる設定項目 ( network.http.referer.userControlPolicy) があります。
  • バージョン 59 以降では (#587523 を参照)、これは network.http.referer.defaultPolicy および network.http.referer.defaultPolicy.pbmode で置き換えられました。

指定可能な値は以下の通りです。

  • 0 — no-referrer
  • 1 — same-origin
  • 2 — strict-origin-when-cross-origin
  • 3 — no-referrer-when-downgrade (既定値)

関連情報