Chrome 不明原因缓存 307 redirect 请求?

2020-04-12 09:17:02 +08:00
 nyse

跨域发送 PUT 请求的时候,浏览器会发送一个 OPTIONS 请求作为 preflight 请求。

然而请求的时候浏览器却报错:

Access to XMLHttpRequest at 'http://example.com/api/v3/app/1' from origin 'http://example.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.

字面意思就是 CORS 请求不允许重定向。但问题是我这链接并没有重定向呀?

打开开发者工具 Network 一看,服务器返回 Status Code: 307 Internal Redirect, 有个 header: Non-Authoritative-Reason: HSTS,redirect 的地址恰好是对应 HTTPS 的地址。

心想是不是 Nginx 开启 HSTS 造成的,但检查了一下,并没有开启 HSTS,而且通过请求工具测试发出 OPTIONS 请求,返回的也是204 No Content, 但是在浏览器里请求还是 307.

试过清理浏览器缓存,一开始正常了,也是返回204 No Content,但是过几天后,又是出现307 Internal Redirect

然而今天通过抓包工具 Charles 抓取了一下,发现 Chrome 并没有真正发出这个 OPTIONS 请求,怀疑是直接读取了缓存。

那么这到底是哪来的缓存导致的?

3548 次点击
所在节点    前端开发
1 条回复
virusdefender
2020-04-12 09:58:09 +08:00
hsts 的话,可能这个域名某些环境下会返回 hsts 头,然后这东西是有有效期的,过期了就好了

chrome://net-internals/#hsts 这里面看下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/661608

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX