IE11 Ajax在5分钟后中止

时间:2017-10-31 19:37:46

标签: javascript ajax angular internet-explorer-11

如果获取响应需要很长时间,IE11会自动中止AJAX请求吗?使用Angular4,我创建了一个相当简单的调用:

this.http.post(url, requestJson, options)
    .map((response: Response) => <string>response.json())

但是,在响应之前,这在服务器上运行了很长时间。我遇到的是IE在5分钟后中止了请求。在Chrome上,我看不到请求被中止。

当请求中止时,我收到错误: XMLHttpRequest:网络错误0x2ef3,由于错误00002ef3无法完成操作。根据MS's documentation表示ERROR_INTERNET_INCORRECT_HANDLE_STATE。

看看Wireshark,我发现IE正在同时发送TCP重置。

我只会遇到与我们的服务器交谈的这种行为 - 在本地运行站点和服务器时请求不会中止。

有没有办法修改此超时,以便它不会中止?注意:我们正在努力的一个更长期的解决方案是修改此请求的行为,以便在收到响应之前请求不会挂起几分钟(为长时间运行的请求设置某种通知系统) )。

我尝试的事情,但尚未解决问题:

  • 我已将XMLHttpRequest对象的超时设置为0.
  • 我已将Observable的超时设置为较大的值。

1 个答案:

答案 0 :(得分:1)

如果您需要等待很长时间,可以考虑转换到Websockets或Long Polling。这似乎是将客户端/服务器通信转移到更适合长时间通信延迟的适当应用程序。我不确定为什么IE11会像这样,但是,听起来你需要等待很长时间,如果服务器一次加载更多,这可能会导致响应时间进一步延迟。这是你的选择吗?