页面引用策略Referrer Policy的介绍和使用

什么是引用策略(Referrer Policy)?引用策略就是从一个文档发出请求时,是否在请求头部定义Referrer的设置。

目前很多网站的防盗链机制都是用头部定义Referrer来判断是否是盗链。其实这个很容易破解,自己在请求时加上Referrer头部就行。

在哪些情况下会设置引用头呢?一般来说,加载一个HTML页面之后,本HTML页面里的JavaScript文件,CSS文件,画面文件都会设置Referrer。然后,点击这个HTML页面里的链接,跳转其它画面时,也会设置Referrer。

引用策略Referrer Policy的设置值

引用策略可以设置为以下值:

  • 空字符串
  • no-referrer
  • no-referrer-when-downgrade
  • same-origin
  • origin
  • strict-origin
  • origin-when-cross-origin
  • strict-origin-when-cross-origin
  • unsafe-url

下面介绍各种设置值的意义

空字符串

默认值:一般浏览器的默认值是no-referrer-when-downgrade

no-referrer

所有请求不发送referrer。

no-referrer-when-downgrade

当请求安全级别下降时不发送referrer。目前,只有一种情况会发生安全级别下降,即从HTTPS到HTTP。HTTPS到HTTP的资源引用和链接跳转都不会发送referrer。

same-origin

对于同源的链接和引用,会发送referrer,其他的不会。

同源的意思是指同一个域名且同一协议。

如果设置成same-origin,那么aaa.com引用bbb.com的资源,不会发送referrer。子域名也不是同一个域名,aaa.com引用test.aaa.com的资源,不会发送referrer。

origin

会发送referrer,但只会发送源信息。源信息包括访问协议和域名。

strict-origin

这个相当于origin和no-referrer-when-downgrade的AND合体。即在安全级别下降时不发送referrer;安全级别未下降时发送源信息。

注意:这个是新加的标准,有些浏览器可能还不支持。

origin-when-cross-origin

这个相当于origin和same-origin的OR合体。同源的链接和引用,会发送完全的referrer信息;但非同源链接和引用时,只发送源信息。

strict-origin-when-cross-origin

这个比较复杂,同源的链接和引用,会发送referrer。安全级别下降时不发送referrer。其它情况下发送源信息。

注意:这个是新加的标准,有些浏览器可能还不支持。

引用策略Referrer Policy的设置方法

我们可以用以下方法来设置引用策略(Referrer Policy)。

  • 通过http响应头中的Referrer-Policy字段
  • 通过meta标签,name为referrer
  • 通过<a>、<area>、<img>、<iframe>、<link>元素的referrerpolicy属性。
  • 通过<a>、<area><link>元素的rel=noreferrer属性。

下面具体介绍各种方法

通过http响应头中的Referrer-Policy字段https://linux.cn/article-5808-1.html

方法如下

HTTP
Content-Security-Policy: referrer no-referrer|no-referrer-when-downgrade|origin|origin-when-cross-origin|unsafe-url;

比如在Apache下,设置方法如下:

Apache
<IfModule mod_headers.c>
Header set Content-Security-Policy: "referrer=no-referrer"
</IfModule>

通过meta标签,name为referrer

方法如下

HTML
<meta name="referrer" content="no-referrer|no-referrer-when-downgrade|origin|origin-when-crossorigin|unsafe-url">

如:

HTML
<meta name="referrer" content="no-referrer">

通过标签的referrer属性

方法如下

HTML
<a href="http://example.com" referrer="no-referrer|origin|unsafe-url">xxx</a>

如:

HTML
<a href="http://example.com" referrer="no-referrer">xxx</a>

Referrer策略还有其他历史遗留的值

Referrer策略还有其他历史遗留的值,不过不建议使用。

  • never等价于no-referrer
  • default等价于no-referrer-when-downgrade
  • always等价于unsafe-url

转载请注明:宇托的狗窝 » 页面引用策略Referrer Policy的介绍和使用

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址