firefox 50 之前 referrerpolicy="same-origin" 无效,因解析器不识别该属性,退回到 no-referrer-when-downgrade;50 版起才支持。

referrerpolicy="same-origin" 在 Firefox 50 之前确实无效 —— 它根本不会被识别,浏览器会退回到默认策略 no-referrer-when-downgrade。
Firefox 对 referrerpolicy 属性的支持起始版本
Firefox 直到 50 版本(2016 年 8 月发布)才开始支持 referrerpolicy 属性。在此之前:
- 所有 HTML 元素上的
referrerpolicy属性会被完全忽略 - 即使写成
<img src="..." referrerpolicy="same-origin">,也等同于没写 - 实际生效的仍是全局默认行为:HTTPS → HTTP 降级时清空 Referer;同协议请求则发送完整 URL
为什么 same-origin 策略在旧版 Firefox 中无法落地
关键原因不是策略逻辑不支持,而是底层解析机制缺失:
- Firefox 49 及更早版本的 HTML 解析器根本不认识
referrerpolicy这个属性名 - 没有对应的 DOM 接口(如
HTMLImageElement.referrerPolicy)供 JS 读取或设置 - 网络层(Necko)未接入策略路由逻辑,请求发出前不检查该属性
- 这意味着你无法通过 JS 动态设置、也无法靠它做跨域资源隔离
兼容旧版 Firefox 的替代方案
如果你必须支持 Firefox referrerpolicy 属性,得换思路:
- 用
<meta name="referrer" content="same-origin">—— 这个 meta 标签从 Firefox 36 就已支持,作用于整个页面所有子资源请求 - 服务端统一加响应头:
Referrer-Policy: same-origin—— 所有现代 Firefox(含 40+)都遵守该响应头 - 避免在敏感链接或图片上暴露 origin 信息:手动截断 URL(如用
/api/xxx代替/api/xxx?token=abc),不把敏感参数塞进路径
注意:即使你用了 <meta> 或响应头,Firefox 49 仍不支持 strict-origin 或 origin-when-cross-origin 这类精细策略 —— 它只认 no-referrer、same-origin、origin 和 no-referrer-when-downgrade 这四种。











