使用 Nginx 1.10 和 HTTP/2 的 Firefox 中的第一个 Ajax 请求失败
Posted
技术标签:
【中文标题】使用 Nginx 1.10 和 HTTP/2 的 Firefox 中的第一个 Ajax 请求失败【英文标题】:First Ajax Request fails in Firefox with Nginx 1.10 and HTTP/2 【发布时间】:2016-09-20 09:29:00 【问题描述】:自从我从 nginx 1.8 升级到 1.10 并激活 HTTP/2 而不是 SPDY 后,我在 Firefox 中触发的第一个 ajax 调用(通过 https)失败了。 如果我再次执行相同的调用,它会起作用。在 Chrome 和 IE 中不会出现此问题。停用 HTTP/2 可以解决问题,但对我来说不是永久的解决方案。
nginx 访问日志甚至没有列出第一个请求,所以我有点不知道从哪里开始调试。
Firefox Network Panel Wireshark Screenshot of first ajax call
火狐:46.0.1 Nginx:1.10 jQuery:2.22
【问题讨论】:
Firefox 中的 HTTP/2 和 CORS 存在一些奇怪的问题(但我没有在您的标头中看到预检请求,这让我有点困惑)。因此,我的建议是你尽你所能确保 CORS 不会咬你。 您使用哪种密码套件?我建议您使用Mozilla 建议的配置用于中级或现代。您可以使用Wireshark 进行故障排除。 我不认为 CORS 有问题,因为 ajax 调用针对的是同一个域。我尝试了不同的密码套件,包括 Mozilla 的密码套件,但均未成功。 还添加了第一个 ajax 调用的 wireshark 截图,遗憾的是我真的看不到那里的东西...... @r3vile 我对 FF 也有几乎相同的问题。但对我来说,这是页面重新加载后长时间不活动后的第一个请求。并且该请求未在 nginx 访问日志中注册。与 CORS 无关,因为我们都没有使用它。它既不是 SPDY 也不是 HTTP2 问题,因为我早在 nginx 1.10 之前就启用了它们并且它们工作正常。不幸的是,我没有更新之前的 nginx 配置文件来查找更改的内容,所以现在我有点卡住并尝试设置。 【参考方案1】:这是一个仅影响版本 46 的 Firefox 错误。 https://bugzilla.mozilla.org/show_bug.cgi?id=1269055.
将 nginx 降级到 1.9.7(有人说甚至可以升级到 1.9.11)也有帮助
【讨论】:
【参考方案2】:我已经检查过 IExplorer 10 和 11 - 同样的问题:罪魁祸首是 nginx v1.10。闲置一段时间后,发布请求未完成。
将 nginx 更新到至少 v1.11 以解决问题。
【讨论】:
以上是关于使用 Nginx 1.10 和 HTTP/2 的 Firefox 中的第一个 Ajax 请求失败的主要内容,如果未能解决你的问题,请参考以下文章