
本文介绍如何通过 html 原生属性(如 `rel="noreferrer"`)安全、高效地控制跳转时的 referer 行为,无需依赖 javascript,兼容性好且隐私友好。
在 Web 开发中,当用户从 page1.com 点击链接跳转至 example1.com 时,浏览器默认会在 HTTP 请求头中携带 Referer: https://page1.com。这虽有助于分析流量来源,但也可能暴露敏感路径、引发隐私问题,或被目标站点用于反爬/访问限制。用户有时希望完全移除 Referer(而非伪造为 rock&roll.com),因为HTTP 协议本身不支持自定义 Referer 值——这是由浏览器安全策略强制限制的(防止 Referer 欺骗攻击),任何试图伪造 Referer 的客户端方案(如 JS 跳转 + history.replaceState)均不可靠且易被禁用。
✅ 正确且推荐的做法是使用 HTML 标签的 rel 属性组合:
访问示例站点
- noreferrer:彻底阻止 Referer 头发送(请求中无 Referer 字段),同时隐式启用 noopener(防范 window.opener 安全漏洞);
- noopener:虽非必需,但强烈建议与 noreferrer 同时使用,避免新页面通过 window.opener.location 反向控制原页面;
- nofollow 可选添加(如 ),仅影响搜索引擎抓取行为,对 Referer 无任何影响,勿混淆其作用。
⚠️ 注意事项:
- rel="noreferrer" 是标准、无 JS 依赖、立即生效的方案,所有现代浏览器(Chrome 18+、Firefox 23+、Safari 11.1+、Edge 12+)均支持;
- 无法设置自定义 Referer(如 rock&roll.com):这是故意设计的安全限制,任何声称可“伪造 Referer”的前端方法(如表单提交 + meta refresh 或 iframe 中转)均不可靠、不兼容或已被现代浏览器拦截;
- 若需服务端可控的 Referer(如代理跳转),应由后端发起 HTTP 重定向(如 302),并在服务器端设置 Referer 头(注意:服务端发出的请求可自定义头,但浏览器向第三方发起的请求不可);
- 对于
总结:若目标是保护用户隐私、防止来源泄露、规避 Referer 检测,请始终优先使用 rel="noreferrer noopener"。它简洁、可靠、零加载延迟,且无需考虑 JS 是否启用,是符合现代 Web 标准的最佳实践。










