Где найти настройки времени ожидания по умолчанию для всех браузеров? - PullRequest
63 голосов
/ 27 августа 2009

Я ищу какую-то документацию, в которой указывается, сколько времени каждый браузер (IE6 / IE7 / FF2 / FF3 и т. Д.) Будет ожидать запроса, прежде чем он просто сдастся и истечет время ожидания.

Мне не повезло, пытаясь получить это.

Есть указатели?

Ответы [ 4 ]

20 голосов
/ 28 августа 2009

Мне удалось найти network.http.connect.timeout для гораздо более старых версий Mozilla:

Это предпочтение было одним из нескольких добавлено, чтобы позволить низкоуровневую настройку код сети HTTP. После часть того же кода была значительно переписан в 2001 году, предпочтения перестали оказывать какое-либо влияние (как отмечалось в all.js еще Сентябрь 2001 г.).

В настоящее время тайм-аут определен соединением системного уровня истечение времени ожидания Добавление способа настроить это значение считается с низким приоритетом.

Казалось бы, network.http.connect.timeout ничего не делал в течение некоторого времени.

Я также видел ссылки на network.http.request.timeout, поэтому я выполнил поиск в Google . Результаты включают множество ссылок на людей, которые рекомендуют другим включать его в about:config, что, по-видимому, является ошибочным убеждением в том, что он действительно что-то делает, так как тот же поиск приводит к этому about: config records article:

Pref удален (не используется) . Ранее: HTTP-сеть тайм-аут. Значение по умолчанию 120 .

на той же странице содержит дополнительную информацию о network.http.connect.timeout:

Pref удален (не используется) . Ранее: определяет, как долго дождитесь ответа до регистрации тайм-аут. Значение по умолчанию 30 .

Отказ от ответственности: информация в Базе знаний MozillaZine может быть неверной, неполной или устаревшей.

5 голосов
/ 27 августа 2009

во-первых, я не думаю, что есть только одно решение вашей проблемы ....

Как вы знаете, каждый браузер сильно отличается.

Но давайте посмотрим, сможем ли мы приблизиться к ответу, который вам нужен ....

Я думаю, что IE может быть легко ...

Проверьте эту ссылку http://support.microsoft.com/kb/181050

Для Firefox попробуйте это:

Откройте Firefox и в адресной строке введите «about: config» (без кавычек). Оттуда прокрутите вниз до Network.http.keep-alive и убедитесь, что для него установлено значение «true». Если это не так, дважды щелкните по нему, и он перейдет от ложного к истинному. Теперь перейдите к следующему значению network.http.keep-alive.timeout - и измените это число, дважды щелкнув по нему. если вы вставите, скажем, 500 там, вы должны быть хорошими. дайте нам знать, если это поможет

4 голосов
/ 15 мая 2014

После последнего обновления Firefox у нас была та же проблема тайм-аута сеанса, и следующие настройки помогли ее устранить.

Мы можем управлять этим параметром network.http.response.timeout.

  1. Откройте Firefox и введите «about: config» в адресной строке и нажмите Enter.
  2. Нажмите "Я буду осторожен, обещаю!" кнопка.
  3. Введите «timeout» в поле поиска, и отобразится параметр network.http.response.timeout.
  4. Дважды щелкните параметр network.http.response.timeout и введите значение времени (в секундах), которое вы не хотите, чтобы время сеанса не истекло, в поле.
2 голосов
/ 29 ноября 2017

Для Google Chrome (протестировано на версии 62)

Я пытался сохранить соединение через сокет из API извлечения Google Chrome с удаленным экспресс-сервером и обнаружил, что заголовки запроса должны соответствовать собственным настройкам соединения <net.socket> Node.JS.

Я установил объект заголовков в своем клиентском скрипте со следующими параметрами:

/* ----- */
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.

...