1. 概念与原理
1.1 HTML5 Referrer Policy 的定义
HTML5 Referrer Policy 是浏览器用来控制 Referer 头发送行为的机制,旨在在跨站请求中实现隐私保护与数据最小化。通过设定策略,网站可以决定在不同场景下发送的来源信息的粒度与范围,从而降低敏感信息的暴露风险。
在网页跳转、资源加载(如图片、脚本、样式表、AJAX 请求)以及跨域请求中,Referrer Policy 影响 Referer 的携带情况。正确理解并应用该策略,是实现“从原理到落地应用”的关键第一步。
1.2 工作原理与影响
当用户从页面 A 请求页面 B 或某个外部资源时,浏览器通常会附带 Referer 头,包含来源的 URL。通过设置Policy 值,可以控制以下要点:会否发送、发送的粒度(完整 URL、Origin 还是空)、以及是否在跨协议跳转时进行降级发送等。
这一策略的核心在于数据最小化原则:在保护用户隐私的同时,确保站点仍然能够进行必要的资源定位与分析。对于外部资源引用、广告追踪、分析工具、第三方 API 调用等场景,合理的策略能平衡隐私和业务需求。
2. 主要策略值及含义
2.1 no-referrer
该策略会完全不发送 Referer 头,跨-origin 请求同样如此。对隐私保护最强,但可能影响分析工具、跨站登录等需要来源信息的场景。
在实现层面,这相当于把所有请求的来源信息全部截断,确保外部站点无法获知用户的页面位置。
2.2 no-referrer-when-downgrade
这是历史默认行为:同源请求会发送完整 Referer,但跨域请求降级时不发送或仅发送更少的信息,尤其在跳转到不安全协议时更严格。
该策略在向后兼容的系统中仍有一定占比,但在新站点的落地中通常会改用更严格的值以提升隐私保护。
2.3 origin
发送的 Referer 仅包含来源的 Origin(协议+域名),不包含路径信息。这在需要判断来源域名但不暴露具体页面路径时很有用。
对于跨域资源引用,原始域名信息仍可用于统计与防护,但不会暴露具体页面结构。
2.4 origin-when-cross-origin
在同源请求时发送完整的 Referer;跨域请求时只发送 Origin。该值实现了对同源行为的完整性需求,同时保护跨域请求的敏感路径信息。
这是一个常见的折中方案,兼顾同源追踪需求和跨域隐私保护。
2.5 same-origin
仅在同源请求时发送 Referer,跨域请求时不发送 Referer。对同源场景的分析仍然有信息,但跨域信息被严格限制。
此值适用于注重跨域隐私保护的站点,同时对同源内部的跟踪分析影响较小。
2.6 strict-origin
在跨域请求时发送 Origin,但在强制降级时不一定发送完整信息。这一策略更强调对跨域来源的最小披露。
在某些严格安全策略中可能被使用,以便在风险较高的场景下减少敏感信息暴露。
2.7 strict-origin-when-cross-origin
同源请求发送完整 Referer;跨域请求发送 Origin;在降级或强制限制时保持严格。该值常用于需要在大多数场景下保留来源信息,同时对跨域操作进行保护。
作为兼具可用性与隐私保护的综合方案,是不少大型站点的实际部署选项之一。

2.8 unsafe-url
发送完整的 Referer(包括路径和查询参数)至所有请求,无论同源还是跨域。这是最不保护隐私的设置,通常只在兼容性极度需要时使用。
在现代应用中应尽量避免使用,以降低敏感信息被泄露的风险。
3. 设置方法与落地应用
3.1 通过 HTTP 头设置 Referrer-Policy
这是最常用的方式,服务器在响应头中添加 Referrer-Policy,可以覆盖整个站点的行为,便于统一管理。
优点:集中控制、易于运维、对不同资源的一致性良好;缺点:对于没有直接控制服务器的静态站点,可能需要额外代理或 CDN 设置。
Referrer-Policy: no-referrer-when-downgrade
若要覆盖全站且兼容性良好,也可以使用更严格的值,如 no-referrer,以实现极致隐私保护。
3.2 使用 HTML Meta 标签设置
在无法统一修改服务器头时,可以在页面头部通过 Meta 标签进行设置,等效于客户端的策略声明。
适用场景:静态页面、单页应用的沙箱环境、需要对单个页面进行快速调试时。
<!-- HTML5 meta tag approach -->
<meta name="referrer" content="origin-when-cross-origin">3.3 组合策略与场景分析
在实际落地应用中,通常需要根据页面功能与风险等级进行组合策略:核心页面采用更严格的策略,外部资源加载点或分析脚本采用相对宽松的策略,确保业务功能不被中断的同时提升隐私保护。
例如:登录、支付等敏感流程使用 no-referrer 或 origin,普通页面使用 origin-when-cross-origin,第三方资源尽量使用最小信息的策略。
3.4 设置示例:服务器配置(Nginx、Apache)
通过服务器配置实现全站策略,可以避免前端页面逐一修改。以下示例展示了常见服务器的配置方式:
# Nginx
add_header Referrer-Policy "no-referrer-when-downgrade";# Apache
Header set Referrer-Policy "no-referrer-when-downgrade"
注意在多站点或反向代理场景中,需确保上游服务器/代理没有覆盖该头部,从而确保策略生效。对于需要分域不同策略的情况,可以在不同 location 块或 VirtualHost 中设置不同的值。
3.5 测试与验证方法
部署完成后,使用浏览器开发者工具的网络面板检查请求头,确认 Referrer-Policy 实际生效。可以查看以下要点:Referer 字段是否按策略被截断或替换、跨域请求的来源信息、以及在控制台出现的策略错误提示。
此外,利用线上工具或浏览器实验室进行回放测试,确保不同浏览器版本对策略的支持情况符合预期。
4. 常见问题与兼容性
4.1 浏览器兼容性
现代主流浏览器(Chrome、Firefox、Edge、Safari、Opera 等)均对 Referrer Policy 提供支持,但不同版本在细节上可能存在差异。持续关注浏览器厂商的兼容性公告,确保站点在老浏览器中的降级表现可控。
4.2 与 CSP 的关系
Content-Security-Policy 与 Referrer Policy 可以协同工作,CSP 中的 referrer 指令可以覆盖部分资源的策略。合理搭配可以在全局与页面级实现更精准的控制。
在设计时应充分测试两者叠加的行为,避免出现意外的 Referer 泄露或资源加载失败的情况。
4.3 动态资源加载场景
对于通过 JavaScript 动态加载的资源,浏览器仍会遵循全局策略;若需要对特定请求进行例外处理,需通过服务端策略或在请求阶段附带相应的头部信息来实现。
5. 落地应用场景与案例
5.1 电商站点的隐私保护策略
在商品页到结算页的跳转、跨域图片和广告资源加载等场景,合理设置 Referrer Policy 能显著降低敏感信息泄露的风险。对用户隐私的保护和转化率之间需要权衡,可在非交易敏感页面使用 origin-when-cross-origin,在支付与账户操作阶段切换到 no-referrer。
5.2 内容分发与第三方资源
对于 CDN 静态资源、广告脚本、分析工具等第三方资源,建议采用更严格的策略(如 origin、same-origin 或 no-referrer),以避免把页面路径等敏感信息暴露给第三方。
在跨域资源请求中,只暴露必要信息,同时尽量保留对业务的基本统计能力。
5.3 数据分析与跟踪的求解
分析工具通常需要一定的 Referer 信息来维持统计的准确性。通过在分析端设置合适的策略值(如 origin-when-cross-origin),可以在不暴露完整页面路径的前提下维持分析的可用性。
对于严格隐私要求的站点,可以结合服务器端标记或短期 cookie 来近似实现分析需求,而不直接暴露页面结构。
HTML5 Referrer Policy 全面解读与设置教程:从原理到落地应用通过上述结构化的策略值、设置方法与落地场景,帮助开发者在实践中实现对 Referer 信息的精细控制。本文持续围绕“从原理到落地应用”的主题,展开对核心概念、策略值、实现方式以及实际案例的深度阐释,以帮助你在实际项目中高效落地并提升隐私保护水平。

