什么是 HTTP 响应字段里的 Referrer Policy

发布时间 2023-11-17 19:05:48作者: JerryWang_汪子熙

如下图所示,我在 HTTP 请求的响应头部里看到 Referrer Policy 字段为 strict-origin-when-cross-origin, 这个字段的含义如下。

HTTP 头部中的 Referrer Policy 字段用于定义浏览器在跨站请求时应如何处理 HTTP Referer 头部。这是一个重要的字段,因为它可以帮助网站所有者控制他们的网站信息如何被共享,并可以提高网站的安全性。这个字段有几个可能的值,其中之一就是 strict-origin-when-cross-origin

strict-origin-when-cross-origin 的含义是:如果请求是在同一个网站内部进行(也就是不跨域)时,Referer 头部将包含完整的 URL。而当请求跨域时,Referer 头部只会包含发出请求的网站的源信息(协议、主机和端口),不包含路径或者查询字符串。

举个例子,假设一个页面的 URL 为 https://www.example.com/path?query=1,当这个页面发出一个同源请求,比如请求 https://www.example.com/api/data,那么请求的 Referer 头部将会是完整的 URL:https://www.example.com/path?query=1

然而,如果这个页面发出一个跨域请求,比如请求 https://www.other-site.com/api/data,那么请求的 Referer 头部将只会是源信息:https://www.example.com

这个策略的优点是,当你的网站与其他网站进行跨域通信时,可以防止敏感的路径和查询参数信息被泄露。这样可以提高网站的安全性,防止可能的数据泄露。

然而,这种策略也有一些局限性。例如,如果你的网站需要与其他网站共享某些路径或查询参数信息,那么 strict-origin-when-cross-origin 策略可能就不适用了。在这种情况下,你可能需要选择一个更适合的 Referrer Policy 策略。

注意,Referrer Policy 的默认值是 no-referrer-when-downgrade,这意味着如果请求是从 HTTPS 到 HTTP,Referer 头部将被省略。如果你没有明确设置 Referrer Policy,那么将使用这个默认值。

总的来说,Referrer Policy 是一个强大的工具,可以帮助你控制你的网站信息如何被共享。选择正确的策略可以提高你的网站的安全性,防止可能的数据泄露。