Referrer-Policy 是一个 HTTP 头,它控制网站在导航到另一个页面时分享用户浏览活动的信息量。referrer 头会揭示用户访问过的前一个网页的 URL,使接收网站能够看到请求的来源。
当用户点击链接以导航到新页面时,referrer 头会随请求自动传递。这可能会暴露敏感信息,例如前一个页面的 URL,给新页面的所有者。
Referrer-Policy 头允许网站管理员指定当用户导航到不同网页时,是否应包括、排除或修改 referrer 信息。这有助于控制与外部网站共享的信息量,并可减轻潜在的隐私和安全风险。
referrer 头,也称为 Referer 头,是一个 HTTP 头字段,包含从中跟随链接的前一个网页的 URL。当用户从一个页面导航到另一个页面时,它会自动包含在请求中。referrer 头提供的推荐信息有助于网站所有者了解流量来源、分析用户行为以及跟踪营销活动的效果。
然而,referrer 头引发了与隐私和安全相关的担忧。默认情况下,referrer 头会暴露前一个页面的完整 URL,包括任何查询参数和敏感信息。这可能导致个人或机密数据无意中泄露给网站所有者或第三方服务。
为了应对与 referrer 头相关的隐私和安全风险,引入了 Referrer-Policy 头。Referrer-Policy 头允许网站管理员控制用户导航到不同网页时共享的 referrer 信息量。
通过设置 Referrer-Policy 头,网站所有者可以指定是否应包括、排除或修改 referrer 信息。以下是一些常见的 Referrer-Policy 指令:
no-referrer
: referrer 头在请求中被完全排除。这意味着没有 referrer 信息会与接收网站共享。这是最严格的策略,提供最高级别的隐私。然而,它可能限制一些合法的功能,如分析和点击跟踪。
no-referrer-when-downgrade
: 如果没有指定 Referrer-Policy 头,这是默认策略。导航到安全的 HTTPS 网站时会发送完整的 referrer 信息,但导航到不太安全的 HTTP 网站时会排除 referrer。这有助于在从安全站点移动到非安全站点时保护 referrer 信息。
origin
: 只发送 referrer URL 的 origin 部分。origin 包含 scheme、domain 和 port,但不包括任何路径或查询参数。这在不暴露完整 URL 的情况下提供了一些关于请求来源的信息。
origin-when-cross-origin
: 类似于 origin
策略,除了在请求在同一来源(同一域)内进行时会发送完整的 referrer URL。在网站内进行分析和跟踪时有帮助,同时在导航到其他域时仍保护 referrer 信息。
strict-origin
: 无论是同源还是跨源请求,都只发送 referrer URL 的 origin 部分。此策略通过排除路径和查询参数提供最高的隐私。
strict-origin-when-cross-origin
: 类似于 strict-origin
策略,除了在请求在同一来源(同一域)内进行时会发送完整的 referrer URL。此策略在隐私和功能性之间取得了平衡。