javascript - 试图弄清楚为什么 Firefox 会发送未经请求的 FIN ACK 数据包

标签 javascript firefox networking tcp

我使用 OpenLaszlo 用 DHTML 编写了一个应用程序。该应用程序在 Chrome 中运行良好,但在 Firefox 中出现问题。 javascript 客户端向 Struts2 中间层发出 HTTP POST 请求,中间层通过 Hibernate 查询数据库,然后返回 XML 响应。该应用程序正在生产中,因此客户端代码、中间层和数据库都托管在我的台式机上。

我可以在 Chrome 和 Firefox 中并排运行该应用程序,虽然在 Chrome 中一切正常,但一些 HTTP 请求(每次都是相同的请求)在 Firefox 上会失败。失败者会在发起 POST 请求后立即这样做,没有给出 HTTP 响应或错误代码(我正在使用 Firebug 来观察 POST 请求和响应)。

在使用 Wireshark 观察流量后,我确定出于某种原因,Firefox 在发出 POST 请求并从服务器接收到标准 ACK 后立即(不到一秒)发送 FIN ACK 数据包。

网络流量如下所示:

在 Chrome 中:客户端发送 POST -> 服务器发送 ACK -> 服务器发送 XML 数据 -> 客户端发送 ACK -> 服务器发送 HTTP/XML 200 响应 -> 客户端发送 ACK

在 Firefox 中:客户端发送 POST -> 服务器发送 ACK -> 客户端发送 FIN、ACK -> 服务器发送 ACK -> 服务器发送 XML 数据 -> 客户端发送重置

我想知道以前是否有人目睹过这种行为,并且可能知道我可以做些什么来解决它。

最佳答案

我也遇到了这个问题。 Firefox 发送与其新的网络更改功能相关的 FIN、ACK。参见:https://hg.mozilla.org/mozilla-central/rev/0a066b7ffa46

我们花了很多时间来检查这个。 我在 stackoverflow 上也有一个帖子:when firefox 38 sent FIN,ACK after server ack an http get from firefox?

任何对此感兴趣的人,请跟踪:bugzilla.mozilla.org/show_bug.cgi?id=1245059 解决方法是将“network.http.network-changed.timeout”设置得更大。检查我们报告的 firefox 错误更多细节。

关于javascript - 试图弄清楚为什么 Firefox 会发送未经请求的 FIN ACK 数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11381405/

相关文章:

javascript - 将数字字符串转换为 Angular 2 中的数字

javascript - 在 firefox 插件中监听 http 响应时识别 XHR(ajax)响应

javascript - WebGL 不适用于 Firefox

javascript - 使用 Node.js 从 API 填充数据

javascript - Materialise 下拉菜单不起作用

javascript - 如何从桌面网页隐藏菜单按钮?

silverlight - 我可以解决 IE7/8 中的 Silverlight 显色差异问题吗?

windows - TNetSharingManager访问冲突问题

docker - 如何将我的服务公开给内部 docker 网络?

docker - 从Docker容器中访问 Vagrant 的虚拟机