Referrer-Policy header

Baseline 廣泛可用 *

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流瀏覽器均已支援。

* 此特性的某些部分可能存在不同級別的支援。

HTTP Referrer-Policy 響應頭 控制請求中應包含多少引薦來源資訊(透過 Referer 頭髮送)。除了 HTTP 頭之外,你還可以在 HTML 中設定此策略

頭型別 響應頭
禁止請求頭

語法

http
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

注意: 頭名稱 Referer 是“referrer”(引薦來源)一詞的拼寫錯誤。Referrer-Policy 頭沒有這個拼寫錯誤。

指令

no-referrer

Referer 頭將被省略:傳送的請求不包含任何引薦來源資訊。

no-referrer-when-downgrade

當協議安全級別保持不變或提高時(HTTP→HTTP、HTTP→HTTPS、HTTPS→HTTPS),在 Referer 中傳送、路徑和查詢字串。對於指向安全性較低目標的請求(HTTPS→HTTP、HTTPS→file),不傳送 Referer 頭。

origin

Referer 頭中只發送。例如,https://example.com/page.html 上的文件將傳送引薦來源 https://example.com/

origin-when-cross-origin

執行同源請求時,傳送、路徑和查詢字串。對於跨源請求和指向安全性較低目標的請求(HTTPS→HTTP),只發送源。

same-origin

對於同源請求,傳送、路徑和查詢字串。對於跨域請求,不傳送 Referer 頭。

strict-origin

當協議安全級別保持不變時(HTTPS→HTTPS),只發送源。對於指向安全性較低目標的請求(HTTPS→HTTP),不傳送 Referer 頭。

strict-origin-when-cross-origin (預設)

執行同源請求時,傳送源、路徑和查詢字串。對於跨域請求,當協議安全級別保持不變時(HTTPS→HTTPS),只發送源。對於指向安全性較低目標的請求(HTTPS→HTTP),不傳送 Referer 頭。

注意: 如果未指定策略,或者提供的值無效(參見規範修訂 2020 年 11 月),則這是預設策略。以前的預設值是 no-referrer-when-downgrade

unsafe-url

執行任何請求時,無論安全性如何,都發送源、路徑和查詢字串。

警告: 此策略會將 HTTPS 資源 URL 中可能包含的私人資訊洩露給不安全的源。請仔細考慮此設定的影響。

與 HTML 整合

你還可以在 HTML 中設定引薦來源策略。例如,你可以透過一個 <meta> 元素設定整個文件的引薦來源策略,其中 namereferrer

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

你可以在 <a><area><img><iframe><script><link> 元素上指定 referrerpolicy 屬性,以設定單個請求的引薦來源策略

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

或者,你可以在 aarealink 元素上設定 noreferrer 連結關係

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

警告: 如上所示,noreferrer 連結關係沒有破折號。當你使用 <meta> 元素為整個文件指定引薦來源策略時,它應該破折號:<meta name="referrer" content="no-referrer">

與 CSS 整合

CSS 可以獲取樣式表中引用的資源。這些資源也遵循引薦來源策略

  • 外部 CSS 樣式表使用預設策略(strict-origin-when-cross-origin),除非它被 CSS 樣式表響應上的 Referrer-Policy HTTP 頭覆蓋。
  • 對於 <style> 元素或 style 屬性,使用所有者文件的引薦來源策略。

示例

no-referrer

來自文件 導航到 使用的引薦來源
https://example.com/page anywhere (無引薦來源)

no-referrer-when-downgrade

來自文件 導航到 使用的引薦來源
https://example.com/page https://example.com/otherpage https://example.com/page
https://example.com/page https://mozilla.org https://example.com/page
https://example.com/page http://example.com (無引薦來源)
http://example.com/page anywhere http://example.com/page

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://example.com/page https://mozilla.org https://example.com/
https://example.com/page http://example.com/page https://example.com/

same-origin

來自文件 導航到 使用的引薦來源
https://example.com/page https://example.com/otherpage https://example.com/page
https://example.com/page https://mozilla.org (無引薦來源)

strict-origin

來自文件 導航到 使用的引薦來源
https://example.com/page https://mozilla.org https://example.com/
https://example.com/page http://example.com (無引薦來源)
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://example.com/page https://mozilla.org https://example.com/
https://example.com/page http://example.com (無引薦來源)

unsafe-url

來自文件 導航到 使用的引薦來源
https://example.com/page?q=123 anywhere https://example.com/page?q=123

指定備用策略

如果你想在所需策略沒有足夠廣泛的瀏覽器支援時指定備用策略,請使用逗號分隔列表,並將所需策略指定在最後

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

在上述情況下,只有當瀏覽器不支援 strict-origin-when-cross-origin 策略時,才會使用 no-referrer

注意: 指定多個值僅在 Referrer-Policy HTTP 頭中受支援,而不是在 referrerpolicy 屬性中。

瀏覽器特定的偏好設定/設定

Firefox 偏好設定

你可以在 Firefox 偏好設定中配置預設引薦來源策略。偏好設定名稱是版本特定的

  • Firefox 59 及更高版本:network.http.referer.defaultPolicy(以及用於私有網路的 network.http.referer.defaultPolicy.pbmode
  • Firefox 53 至 58 版本:network.http.referer.userControlPolicy

所有這些設定都採用相同的值集:0 = no-referrer1 = same-origin2 = strict-origin-when-cross-origin3 = no-referrer-when-downgrade

規範

規範
引薦來源策略
# referrer-policy-header

瀏覽器相容性

另見