如果获取响应需要很长时间,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重置。
我只会遇到与我们的服务器交谈的这种行为 - 在本地运行站点和服务器时请求不会中止。
有没有办法修改此超时,以便它不会中止?注意:我们正在努力的一个更长期的解决方案是修改此请求的行为,以便在收到响应之前请求不会挂起几分钟(为长时间运行的请求设置某种通知系统) )。
我尝试的事情,但尚未解决问题:
答案 0 :(得分:1)
如果您需要等待很长时间,可以考虑转换到Websockets或Long Polling。这似乎是将客户端/服务器通信转移到更适合长时间通信延迟的适当应用程序。我不确定为什么IE11会像这样,但是,听起来你需要等待很长时间,如果服务器一次加载更多,这可能会导致响应时间进一步延迟。这是你的选择吗?