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

浏览器兼容性

另见