我正在寻找某种文档来指定每个浏览器(IE6/IE7/FF2/FF3等)在请求放弃和超时前等待多长时间.
我没有运气试图得到这个.
有什么指针吗?
我收到了一个我无法复制的错误报告,但是ajax-call timeout是当前最好的猜测.
所以我试图找出jQuery $.ajax()调用超时的默认值.有人有想法吗?在jQuery文档中找不到它.
提前谢谢,马库斯
我在网上看,但文档很难得到.我们都知道使用浏览器内置XMLHttpRequest对象的基本AJAX调用(假设这里有一个现代浏览器):
var xmlHttp = new XMLHttpRequest(); // Assumes native object
xmlHttp.open("GET", "http://www.example.com", false);
xmlHttp.send("");
var statusCode = xmlHttp.status;
// Process it, and I'd love to know if the request timed out
Run Code Online (Sandbox Code Playgroud)
那么,有没有办法通过检查浏览器中的XMLHttpRequest对象来检测AJAX调用是否超时?我会被建议做些什么window.setTimeout(function() { xmlHttp.abort() }, 30000);吗?
谢谢!
-麦克风
在普通的javascript中执行Ajax请求时,似乎可以设置超时值.请参阅如何在浏览器中检测AJAX(XmlHttpRequest)调用的超时?
当我使用jQuery的ajax实现和其他类似的框架时,它也是可能的.请参阅设置ajax超时(jQuery)
浏览器似乎对其默认超时有相当模糊的规范.请参阅浏览器超时
因此,有人可能会"嘿,我要为我的ajax请求设置超时,以便所有用户都具有相同的超时".
但接下来的问题是:它会在所有情况下实际覆盖浏览器的超时吗?
当我说"所有"情况时,我的意思是,例如,如果浏览器超时值小于您的ajax请求超时值.
我怀疑它没有.
我还怀疑最好总是有一个超时错误处理程序,以确保无论发生什么,您都可以显示相关消息,这将为您的支持团队节省数小时的工作,并为您的公司节省资金.请参阅确定$ .ajax错误是否超时
提前致谢
我使用Express 4.X和节点js 0.12.
我的一条路线是文件上传和处理,对于某些文件,上传和处理需要超过2分钟的默认超时.我试图将timeout设置为超过2分钟的值,但它只是不工作,服务器每次2分钟后正好关闭连接.
server.timeout = 60 * 60 * 1000; // still closes after 2 minutes
server.on('connection', function(socket) {
socket.setTimeout(700 * 1000); // still closes after 2 minutes
});
res.setTimeout(0);// still closes after 2 minutes
req.setTimeout(0);// still closes after 2 minutes
res.connection.setTimeout(0);// still closes after 2 minutes
Run Code Online (Sandbox Code Playgroud)
连接超时中间件也没有帮助,它只是在2分钟后继续关闭连接.尝试将节点版本更改为旧版本但没有成功.尝试在网上找到的所有变化,但连接仍然关闭...
我在460Application Load Balancer的日志中看到了大量的状态代码.我没有在时间,服务器或请求URL方面看到这些代码的任何模式.根据这篇论坛帖子,460意味着:
在空闲超时在前端或后端连接上启动之前,客户端已关闭与ALB的连接.
我可以看到请求发送到后端服务器,后端处理请求没有问题,非常快.为什么会发生这些错误?此ALB使用6-8个后端服务器进行大量流量.
示例ALB日志:
https 2017-01-30T22:46:27.451363Z app/LOAD-BALANCER/bbab458ad0b80d X.X.X.X:55999 10.5.X.X:80 0.000 -1 -1 460 - 132 0 "GET https://www.website.com:443/app/page HTTP/1.1" "-" ECDHE-RSA-AES128-SHA TLSv1 arn:aws:elasticloadbalancing:us-west-2:743462462234:targetgroup/TARGET-GROUP/e6120e5adr245b79107e "Root=1-588fc23e-77aea5adf4534af3de09659d13a08"
来自后端的示例NGINX日志:
X.X.X.X 1485807955.048 www.website.com /app/page - GET 200 - 0.056 24 text/html; charset=UTF-8 -
http nginx amazon-ec2 amazon-web-services elastic-load-balancer
我有一个 API,可以执行可能需要长时间运行的任务,最多可能需要 10 分钟。当我从 Postman 调用 API 时,效果很好,但是当我从浏览器(Chrome、Safari、Firefox)使用 API 时,请求会在收到响应之前超时。API是用NodeJS/Express编写的,我已经增加了服务器的超时时间。我还增加了用于进行 API 调用(请求-承诺)的 javascript 库的超时。即使请求在浏览器中超时,API 也会继续运行并完成。如何阻止浏览器的请求超时?
假设我使用网络浏览器上传一个巨大的文件(可能是几 GB),所有数据传输到服务器可能需要几个小时。假设服务器对上传文件的大小没有限制,它只是不断吞噬数据。浏览器会认真工作几个小时直到所有数据都传输完毕吗?或者浏览器一段时间后会提示某些错误?还是浏览器特定的问题?