Referrer-Policy header
Baseline 广泛可用 *
HTTP Referrer-Policy 响应头 控制请求中应包含多少引荐来源信息(通过 Referer 头发送)。除了 HTTP 头之外,你还可以在 HTML 中设置此策略。
语法
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-originsame-originstrict-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> 元素设置整个文档的引荐来源策略,其中 name 为 referrer
<meta name="referrer" content="origin" />
你可以在 <a>、<area>、<img>、<iframe>、<script> 或 <link> 元素上指定 referrerpolicy 属性,以设置单个请求的引荐来源策略
<a href="http://example.com" referrerpolicy="origin">…</a>
或者,你可以在 a、area 或 link 元素上设置 noreferrer 链接关系
<a href="http://example.com" rel="noreferrer">…</a>
警告: 如上所示,noreferrer 链接关系没有破折号。当你使用 <meta> 元素为整个文档指定引荐来源策略时,它应该带破折号:<meta name="referrer" content="no-referrer">。
与 CSS 集成
CSS 可以获取样式表中引用的资源。这些资源也遵循引荐来源策略
示例
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 |
指定备用策略
如果你想在所需策略没有足够广泛的浏览器支持时指定备用策略,请使用逗号分隔列表,并将所需策略指定在最后
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-referrer、1 = same-origin、2 = strict-origin-when-cross-origin、3 = no-referrer-when-downgrade。
规范
| 规范 |
|---|
| 引荐来源策略 # referrer-policy-header |
浏览器兼容性
加载中…