问题描述
我已经使用OpenLaszlo用DHTML编写了一个应用程序.该应用程序在Chrome浏览器中运行正常,但在Firefox中却出现了问题. javascript客户端向Struts2中间层发出HTTP POST请求,该中间层通过Hibernate查询数据库,然后返回XML响应.该应用程序正在生产中,因此客户端代码,中间层和数据库都托管在我的台式机上.
I have written an application in DHTML using OpenLaszlo. The application works perfectly fine in Chrome, but it is having problems in Firefox. The javascript client makes HTTP POST requests to a Struts2 middle layer, which queries the database via Hibernate and then returns an XML response. The application is in production, so the client code, middle layer and database are all hosted on my desktop machine.
我可以在Chrome和Firefox中并行运行该应用程序,尽管一切在Chrome中都可以正常运行,但是一些HTTP请求(每次都相同)将在Firefox上失败.失败的请求在启动POST请求后立即执行,没有给出HTTP响应或错误代码(我正在使用Firebug来监视POST请求和响应).
I can literally run the application in Chrome and Firefox side-by-side, and while everything works perfectly in Chrome, a few of the HTTP requests (the same ones every time) will fail on Firefox. The ones that fail do so immediately after the POST request is initiated, with no HTTP response or error code given (I am using Firebug to watch the POST requests and responses).
使用Wireshark观察流量后,我确定由于某些原因,Firefox在发出POST请求并从服务器接收到标准ACK之后立即(不到一秒钟)发送FIN ACK数据包.
After watching the traffic with Wireshark I have determined that, for some reason, Firefox is sending a FIN ACK packet immediately (less than a second) after making the POST request and receiving the standard ACK from the server.
网络流量如下:
在Chrome中:客户端发送POST->服务器发送ACK->服务器发送XML数据->客户端发送ACK->服务器发送HTTP/XML 200响应->客户端发送ACK
In Chrome: Client sends POST -> Server sends ACK -> Server sends XML data -> Client sends ACK -> Server sends HTTP/XML 200 Response -> Client sends ACK
在Firefox中:客户端发送POST->服务器发送ACK->客户端发送FIN,ACK->服务器发送ACK->服务器发送XML数据->客户端发送重置
In Firefox: Client sends POST -> Server sends ACK -> Client sends FIN, ACK -> Server sends ACK -> Server sends XML data -> Client sends a reset
我想知道以前是否有人目睹过这种类型的行为,并且可能知道我该如何解决.
I am wondering if anyone has witnessed this type of behavior before, and might know what I can do to fix it.
推荐答案
我也遇到了此问题. Firefox发送与其新的网络更改功能相关的FIN,ACK.请参阅: https://hg.mozilla.org/mozilla-central/rev/0a066b7ffa46
i also encountered this issue. Firefox send FIN,ACK related to its new network change feature. see: https://hg.mozilla.org/mozilla-central/rev/0a066b7ffa46
我们花费大量时间进行检查.我在stackoverflow上也有一篇文章:
we spend huge time in checking this. i have also an post at 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"设置设置得更大.更多细节.
for anyone interested in this, please track: bugzilla.mozilla.org/show_bug.cgi?id=1245059 workaround solution is to set "network.http.network-changed.timeout" setting bigger. check our reported firefox bug for more detail.
这篇关于试图弄清为什么Firefox发送未经请求的FIN ACK数据包的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!