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

Chrome中HTTP 303响应下出现额外GET请求的原因探究

为什么Chrome在303重定向后会多一个GET请求?

这是个很有意思的浏览器行为差异问题,我来帮你拆解一下:

首先得明确HTTP 303 See Other的核心规范:根据HTTP/1.1标准,当服务器返回303响应时,无论客户端原始请求用的是POST、PUT还是GET,都必须改用GET方法请求Location头指定的资源。正常流程应该是:

  • 发送原始请求(比如POST http://localhost:9001/redirect)
  • 服务器返回303 + Location指向http://localhost:9001/response
  • 客户端自动发送GET请求到目标地址

结合你使用的Chrome版本(v66.0.3359.170),出现额外GET请求的原因主要有这些:

1. Chrome旧版本的XHR重定向bug

在Chrome 66这类较早的版本中,存在一个已知的逻辑问题:当XMLHttpRequest遇到303重定向时,会重复发送一次GET请求到Location指定的地址。这个问题是当时Chrome的XHR实现缺陷导致的,后续的Chrome版本已经修复了这个问题。

2. 浏览器网络面板的显示逻辑差异

Firefox的网络面板默认会把重定向请求和最终请求合并到一个条目里(需要展开才能看到完整的请求链),而Chrome则会把每一个独立的HTTP请求都单独列出来。不过这种情况通常只是显示方式不同,不会真的多发送一个请求——你可以检查Firefox的请求详情,确认是否实际也发送了相同数量的请求。

3. 跨域场景的额外校验(如果你的请求是跨域的)

虽然服务器返回了Access-Control-Allow-Origin: *,但Chrome在跨域重定向的处理上有更严格的校验逻辑。不过如果是跨域POST请求,通常会先发送OPTIONS预请求,而你提到多出来的是GET请求,所以这个可能性相对较低。

验证建议

你可以通过以下方式确认具体原因:

  • 把Chrome升级到最新版本,看看额外的GET请求是否消失
  • 查看Chrome网络面板中额外GET请求的Initiator列,确认它的发起来源
  • 在Firefox中展开网络面板的重定向条目,对比实际请求数量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:33:47