如何防止Mozilla Firefox使用多个TCP连接?

时间:2020-07-21 11:46:13

标签: javascript jquery ajax firefox tcp

我有一个嵌入式网站,用户可以使用摘要身份验证通过输入表单和ajax请求向我的HTTP Server发送一些数据。我的HTTP服务器仅限于1个用于HTTP请求的TCP连接。如果请求完成,则将用location.replace(newSite)加载另一个页面。

问题是,在第一个ajax请求之后,Firefox希望创建到服务器的新TCP连接,这是不可能的,因此失败了(我可以在Wireshark中看到它)。在Chrome中,由于使用相同的TCP连接,因此一切正常。
如果尚未关闭来自加载站点的TCP连接,则在第一个ajax请求时也会发生此问题。

有没有办法通过javascript告诉Firefox,它应该在使用后立即关闭每个连接,或者(更好)对任何正在进行的请求使用相同的TCP连接?

我已经尝试过"Connection":"close"来处理ajax请求,但是没有任何改变。此外,我无法处理location.replace请求或直接在地址栏中键入的URL请求。

谢谢你的帮助。

Ajax请求:

$.ajax({
 url: "/res",
 dataType: 'text', 
 cache: false,
 async: true,
 data: form_data,
 contentType: false,
 processData: false,
 timeout: 300,
 type: 'post',
 headers: { 'Connection':'close' },
 username: sUser,
 password: sPass,             
 })
 .done(function(data, textStatus, jqXHR){                   
    window.location.replace("/site.html");
                    
 })
.fail(function( jqXHR, textStatus, errorThrown ){
    alert("fail");              
 })

1 个答案:

答案 0 :(得分:0)

是否可以通过javascript告诉Firefox,它应该在使用后立即关闭每个连接,还是(最好)对任何正在进行的请求使用相同的TCP连接?

无法指示服务器上的客户端不要使用多个并行连接,也不能指示客户端应在收到响应后立即关闭连接。

但是响应完成后,可以在服务器端关闭连接,从而强制客户端为下一个请求打开新的TCP连接。