mul*_*axp 5 php google-chrome http-status-code-307
我们有一个php页面,可能需要一些时间来加载,响应时间可能超过30秒,它有一个沉重的脚本,这是正常的,不向公众开放。该页面每次执行时都会在数据库中保存一条日志,我注意到,当页面加载速度很快时,日志会保存一次,但如果响应时间较长,日志会保存两次。
奇怪的是,这只发生在Chrome中,当在Firefox上打开页面时,即使加载时间很长,日志也会保存一次。这让我推断,当响应时间很长时,Chrome 会执行该页面两次。
在检查 Chrome 中的网络后,我发现实际上 Chrome 加载了两次页面:
第一次被取消,然后重定向(307),最后加载。(在他的例子中,加载时间超过一分钟,但这很正常)
该重定向不是 307 临时重定向,而是 307内部重定向。经过更多挖掘后,事实证明 Chrome 实际上有一个执行此重定向的扩展(请参阅 @Rob W. 307 Redirect whenloadinganalytics.js in Chrome 的答案)
问题是:
谢谢!
小智 2
这307 internal redirect不是真正的重定向。这是 Chrome 完成的虚假内部重定向,实际上并未发送到服务器。Chrome 会在看到HSTS非权威标头时执行此操作,因此它会创建一个带有 a 的虚假请求307 internal redirect,然后使用第一个虚假请求中的位置标头中找到的升级后的 URL 向后端/服务器发送真实请求。这是一项安全功能 ( ),允许站点选择浏览器从 升级到。您可以在这里查看@Barry的答案/sf/answers/2394947201/httpsinternal redirecthttp strict transport securityhttphttps
在启用它的 Web 服务器中查找配置。它类似于Strict-Transport-Security发送到浏览器的标头,因此找到它的设置位置,然后将其删除。另外,请记住从 Chrome 缓存中删除网站本身,以便 Chrome 不会自动升级到https. .dev它也可以在预加载到浏览器本身的域本身上设置(例如,任何带有或.app将升级为使用的域名https;在这种情况下,实际上没有什么可做的。检查预加载的域这里https://hstspreload.org/。