我有一个嵌入式网站,用户可以使用摘要身份验证通过输入表单和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");
})
答案 0 :(得分:0)
是否可以通过javascript告诉Firefox,它应该在使用后立即关闭每个连接,还是(最好)对任何正在进行的请求使用相同的TCP连接?
无法指示服务器上的客户端不要使用多个并行连接,也不能指示客户端应在收到响应后立即关闭连接。
但是响应完成后,可以在服务器端关闭连接,从而强制客户端为下一个请求打开新的TCP连接。