You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express重定向时浏览器未设置Referrer请求头的原因及解决方法

302重定向后Referrer字段未设置的原因与解决方法

先看给定的Express路由代码:

router.get('/pls-redirect', function (req, res, next) {
  res.redirect("https://www.google.com")
});

当访问mydomain/pls-redirect时,服务端返回302状态码并指向Google,但浏览器跳转后的请求头里没有带上mydomain/pls-redirect作为Referrer,原因和解决方法如下:

为什么Referrer没被设置?

这是浏览器默认的Referrer策略导致的:

  • 跨域重定向场景下,浏览器默认采用strict-origin-when-cross-origin策略,此时只会发送源地址(即mydomain)而非完整的请求路径;如果是HTTP站点跳转到HTTPS站点,部分浏览器甚至会直接省略Referrer字段,以此遵循隐私安全规范。
  • 本质上是浏览器为了避免跨域场景下泄露完整的源URL路径,默认做了限制。

如何让跳转请求带上完整Referrer?

要实现这一效果,需要在重定向的响应中设置合适的Referrer-Policy头,强制浏览器发送完整的Referrer信息:

修改后的Express路由代码如下:

router.get('/pls-redirect', function (req, res, next) {
  // 设置Referrer策略为unsafe-url,允许跨域发送完整URL
  res.setHeader('Referrer-Policy', 'unsafe-url');
  res.redirect("https://www.google.com");
});

注意事项:

  • unsafe-url策略会发送完整的URL(包含路径、查询参数等所有信息),如果你的原URL包含敏感数据,不建议使用。
  • 若仅需发送源地址+路径(无需查询参数),可以尝试origin-when-cross-origin策略,但该策略在跨域场景下仍只会发送源地址,只有同域跳转才会发送完整路径。

内容的提问来源于stack exchange,提问作者Gavin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 19:57:25