如果获得响应的时间太长,IE11 是否会自动中止 AJAX 请求?使用 Angular4,我创建了一个相当简单的调用:
this.http.post(url, requestJson, options)
.map((response: Response) => <string>response.json())
但是,这在响应之前在服务器上运行了相当长的时间。我遇到的是 IE 在 5 分钟后中止请求。在 Chrome 上,我没有看到请求被中止。
当请求中止时,我得到错误:XMLHttpRequest: Network Error 0x2ef3, Could not complete the operation due to error 00002ef3. 根据MS's documentation表示 ERROR_INTERNET_INCORRECT_HANDLE_STATE。
查看 Wireshark,我看到 IE 正在同时发送 TCP 重置。
我只在与我们的服务器交谈时遇到过这种行为 - 在本地运行站点和服务器时请求不会中止。
有没有办法修改这个超时,使其不会中止?注意:我们将努力实现的一个更长期的解决方案是修改此请求的行为,以便请求在收到响应之前不会挂起几分钟(为长时间运行的请求完成时设置某种通知系统)。
我尝试过的方法,没有解决问题:
- 我已将 XMLHttpRequest 对象的超时设置为 0。
- 我已将 Observable 的超时设置为一个较大的值。
最佳答案
如果等待时间较长,您可以考虑过渡到 Websockets 或长轮询。这似乎是一个合适的应用程序,可以将客户端/服务器通信转移到更适合长时间通信延迟的方式。我不确定为什么 IE11 会这样,但是,听起来您等待了很长时间,如果服务器一次加载得更多,这可能会导致响应时间进一步延迟。这是您的选择吗?
关于javascript - IE11 Ajax 在 5 分钟后中止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47043337/