2

我使用 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 数据 -> 客户端发送重置

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

4

1 回答 1

0

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

我们花费大量时间来检查这一点。我在stackoverflow上也有一个帖子:当firefox 38在服务器确认从firefox获取http后发送FIN,ACK时?

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

于 2016-02-04T10:23:45.647 回答