在哪里可以找到所有浏览器的默认超时设置?
Posted
技术标签:
【中文标题】在哪里可以找到所有浏览器的默认超时设置?【英文标题】:Where can I find the default timeout settings for all browsers? 【发布时间】:2010-11-23 11:03:09 【问题描述】:我正在寻找某种文档来指定每个浏览器(IE6/IE7/FF2/FF3 等)在放弃和超时之前等待请求的时间。
我没有运气尝试得到这个。
任何指针?
【问题讨论】:
***.com/questions/5798707/browser-timeouts 【参考方案1】:适用于谷歌浏览器(在版本 62 上测试)
我试图保持从 google chrome 的 fetch API 到远程快速服务器的套接字连接,并发现请求标头必须匹配 Node.JS 的本机 <net.socket>
连接设置。
我使用以下选项在客户端脚本上设置 headers 对象:
/* ----- */
head = new headers();
head.append("Connnection", "keep-alive")
head.append("Keep-Alive", `timeout=$1*60*5`) //in seconds, not milliseconds
/* apply more definitions to the header */
fetch(url,
method: 'OPTIONS',
credentials: "include",
body: JSON.stringify(data),
cors: 'cors',
headers: head, //could be object literal too
cache: 'default'
)
.then(response=>
....
).catch(err=>...);
在我的快速服务器上,我按如下方式设置我的路由器:
router.head('absolute or regex', (request, response, next)=>
req.setTimeout(1000*60*5, ()=>
console.info("socket timed out");
);
console.info("Proceeding down the middleware chain link...\n\n");
next();
);
/*Keep the socket alive by enabling it on the server, with an optional
delay on the last packet sent
*/
server.on('connection', (socket)=>socket.setKeepAlive(true, 10))
警告
请使用常识并确保您保持打开套接字连接的用户经过验证和序列化。它也适用于 Firefox,但如果您将 TCP 连接保持打开超过 5 分钟,它真的很容易受到攻击。
我不确定一些鲜为人知的浏览器是如何运行的,但我也会在此答案后面附上 Microsoft 浏览器的详细信息。
【讨论】:
然后呢?超时时间是多少? 能给个链接吗? 这没有回答问题。【参考方案2】:在上次 Firefox 更新后,我们遇到了同样的会话超时问题,以下设置帮助解决了这个问题。
我们可以通过network.http.response.timeout
参数来控制它。
-
打开 Firefox 并在地址栏中输入“about:config”,然后按 Enter。
点击“我会小心的,我保证!”按钮。
在搜索框中输入“timeout”,将显示
network.http.response.timeout
参数。
双击network.http.response.timeout
参数并在框中输入您不希望会话超时的时间值(以秒为单位)。
【讨论】:
【参考方案3】:我设法找到network.http.connect.timeout 用于更旧版本的 Mozilla:
这个偏好是几个之一 添加以允许对 HTTP 网络代码。之后 相同代码的一部分是 2001 年进行了重大改写, 偏好不再有任何影响 (如 all.js 中所述,早在 2001 年 9 月)。
目前已确定超时 通过系统级连接 建立超时。添加一种方法 配置这个值被认为 低优先级。
network.http.connect.timeout
似乎有一段时间没有做任何事情了。
我还看到了对network.http.request.timeout
的引用,所以我做了一个Google search。结果包括很多人的链接,这些人建议其他人将它包含在about:config
中,这似乎是一种错误的信念,认为它确实做了一些事情,因为同样的搜索出现了这篇about:config entries 文章:
Pref removed (unused)。 以前:HTTP 特定网络 暂停。默认值为 120。
same page 包含有关 network.http.connect.timeout
的其他信息:
Pref removed (unused)。 以前:确定多长时间 等待回复,直到注册 超时。默认值为 30。
免责声明:MozillaZine 知识库中的信息可能不正确、不完整或过时。
【讨论】:
更新:network.http.response.timeout
在 Firefox 版本 28 中未设置为版本 29 中的默认限制 300(5 分钟)。see this blog entry at morgb.blogspot.de
我最近在 Google Chrome 和 Firefox 中对此进行了实验,到目前为止似乎根本没有任何 HTTP 超时。我没有同时开始测试,但谷歌浏览器已经愉快地等待了 2000 多秒,而 Firefox 正在等待 1500 秒。【参考方案4】:
首先,我不认为只有一个解决方案可以解决您的问题....
如您所知,每个浏览器都有很大的不同。
但是让我们看看我们是否可以更接近您需要的答案....
我认为 IE 可能很容易......
检查此链接 http://support.microsoft.com/kb/181050
对于 Firefox,试试这个:
打开 Firefox,在地址栏中输入“about:config”(不带引号)。从那里向下滚动到 Network.http.keep-alive 并确保将其设置为“true”。如果不是,双击它,它会从假变为真。现在,转到 network.http.keep-alive.timeout 的下一个 - 并通过双击更改该数字。如果你在那里输入500,你应该很好。让我们知道这是否有帮助
【讨论】:
对于 Firefox:我试过了,但我的理解是,“keep-alive”是 HTTP 请求返回后 TCP 连接保持打开的时间,所以如果你再次请求它'将重用连接并避免握手......这真的是请求超时吗?以上是关于在哪里可以找到所有浏览器的默认超时设置?的主要内容,如果未能解决你的问题,请参考以下文章