referrerPolicy大小写敏感性在Firefox vs Chrome差异?

作者:袖梨 2026-08-04

referrerPolicy大小写敏感性在Firefox vs Chrome差异?并不只看表面做法,关键还要理解相关条件、限制和后续影响。

referrerPolicy 属性值大小写敏感,必须严格使用规范定义的7个全小写短横线分隔值,如"no-referrer";HTML中属性名为referrerpolicy(全小写),JS中DOM属性为referrerPolicy(驼峰)。

referrerPolicy 属性值是否大小写敏感?

大小写敏感,所有主流浏览器都严格按规范匹配 referrerPolicy 值,不支持驼峰、全大写或缩写。比如 "no-referrer" 有效,但 "No-Referrer""NO_REFERRER""noreferer" 在 Firefox 和 Chrome 中均被忽略,退化为默认策略(通常是 "strict-origin-when-cross-origin")。

Firefox 和 Chrome 对非法值的处理差异

两者行为一致:遇到无效值时均静默降级,不报错也不警告,但降级目标略有不同:

  1. Chrome(v120+):非法值 → "strict-origin-when-cross-origin"
  2. Firefox(v122+):非法值 → "no-referrer-when-downgrade"(旧版默认,仍沿用)

这意味着同一段写错的代码(如 referrerpolicy="none")在两个浏览器中实际生效的 referrer 行为可能不同——Chrome 发送 origin,Firefox 可能不发任何 referrer(取决于协议和目标站点)。务必校验拼写,不能依赖“差不多就行”。

哪些值是合法且跨浏览器兼容的?

只使用规范定义的 7 个全小写短横线分隔值,其他变体均不可靠:

  1. "no-referrer"
  2. "no-referrer-when-downgrade"
  3. "origin"
  4. "origin-when-cross-origin"
  5. "same-origin"
  6. "strict-origin"
  7. "strict-origin-when-cross-origin"

注意:"unsafe-url" 虽然合法,但会泄露路径和参数,仅限可信上下文;"origin-when-cross-origin" 是现代推荐的平衡选择,Chrome/Firefox 均支持无差异。

HTML 标签与 JS 设置 referrerPolicy 的写法区别

HTML 属性名是 referrerpolicy(全小写),而 JS DOM 属性是 referrerPolicy(驼峰):

<a href="https://example.com" referrerpolicy="no-referrer">link</a>

JS 中必须用驼峰:

el.referrerPolicy = "no-referrer"; // ✅ 正确<br>el.setAttribute("referrerpolicy", "no-referrer"); // ✅ 也可,但属性名仍是小写

常见错误是 HTML 里写成 referrerPolicy(带大写 P),这会被浏览器当无效属性忽略;JS 里误用 referrerpolicy(全小写)则报 undefined ——大小写在这里是硬性契约,不是风格偏好。

相关文章

精彩推荐