Я хочу иметь возможность прерывать асинхронные XMLHttpRequests, которые тратят много времени на ожидание результатов с сервера. Поскольку эти запросы могут быть очень длинными, установка тайм-аута перед отправкой XHR неуместна.
Я могу вызвать XMLHttpRequest.abort(), но хотя это предотвращает вызов обработчиков изменения состояния готовности, похоже, что он не закрывает соединение с сервером, поэтому сервер продолжает работать (наблюдается как в Firefox, так и в Chrome). Похоже, что соединение с сервером не закрывается до тех пор, пока данные не будут окончательно получены с сервера.
В спецификации говорится, что атрибут тайм-аута в XHR может быть установлен в любое время. время, даже после того, как выборка началась: «Это означает, что атрибут тайм-аута может быть установлен во время выборки. Если это произойдет, он все равно будет измеряться относительно начала выборки». Однако установка этого атрибута непосредственно перед или после вызова abort() для XHR, ожидающего данных с сервера, не имеет никакого эффекта в Firefox 26 или Chrome 31. Соединение остается открытым, пока сервер не завершит свою работу и не отправит ответ. заголовки.
Поддерживается ли эта функция в каких-либо браузерах? Или я что-то не так понимаю? Я тестирую с использованием Javascript на стороне клиента и сервлета Java на стороне сервера, поэтому никакие другие фреймворки не мешают.