请问chrome浏览器的默认超时时间是多久?

是不是如果chrome不关闭,服务端一直hold请求,那么浏览器这边会一直显示Pending?

阅读 54.5k
5 个回答

测试时间:2019/02/26
MacOS 环境下,timeout在各浏览器默认值为(以下浏览器都为当前时间最新版本)

  • chrome 72.x 为4min
  • safari 12 为8min
  • firefox 65 貌似没有超时时间

测试代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <button id="queryBtn">query</button>
    <time id="time"></time>
    <script>
        const ajax = (url = '/api/timeout') => {
            const xhr = new XMLHttpRequest();
            //设置xhr请求的超时时间
            xhr.timeout = 60 * 5 * 1000;
            xhr.responseType = "text";
            xhr.open('GET', url, true);
            xhr.onload = function(e) { 
                if(this.status == 200 || this.status == 304){
                    console.log('请求完毕')
                    if(loopId) {
                        clearInterval(loopId)
                    }
                }
                console.log(e)
            }
            xhr.send()
        }
        const queryBtn = document.querySelector('#queryBtn')
        const time = document.querySelector('#time')
        loopId = null
        queryBtn.addEventListener('click', (event) => {
            ajax()
            const startTime = new Date()
            loopId = setInterval(() => {
                const s = parseInt((new Date() - startTime) / 1000)
                time.innerHTML = s + ' s'
            }, 500)
        })
    </script>
</body>
</html>
var express = require('express');
var app = express();
var http = require('http').Server(app);
var bodyParser = require('body-parser');

app.use(bodyParser());
app.use(express.json());
app.use(express.static(__dirname + ''));
app.get('/', function(req, res){
    res.render('index', {});
    // res.send('<h1>Welcome Realtime Server</h1>');
});

app.get('/api/timeout', function(req, res){
    setTimeout(() => {
        res.send("i don't see a lot of PUT requests anymore")
    }, 60 * 10 * 1000)// 这里设置服务器的响应时间
});


http.listen(3004, function(){
    console.log('http://127.0.0.1:3004');
});

且在chrome设置timeout为5min没有用,在4min时已经提示请求失败
上面这张是chrome,下面是Safari

chrome
safari

刚在Mac 下的Chrome80中拿@起风了 的代码验证了一下,结论是:Script 4分钟超时,xhr 2分钟超时:
image.png

这个是看你请求时的timeout设置为多少的吧?没有设置的话应该默认是0,即永不超时。举个例子,在异步ajax请求的时候,要设置请求的timeout(超时时间),超过这个时间会回调error。

普通请求1min就会504了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏