javascript - IE11 Ajax 在 5 分钟后中止

标签 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: 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/

相关文章:

javascript - jQuery AJAX JSONP 返回 400 错误请求

javascript - 在 webkit 浏览器中调用 location.replace 后无法运行任何异步 ajax 请求

angular - 如何在 angular2 模型上声明日期属性

Angular 2 *ngFor错误: Can't bind to 'menuitemtype' since it isn't a known property of 'div'

javascript - Node Express Passport 与 Angular - 不兼容?

javascript - 将元素追加到列表中

javascript - bootstrap datetimepicker 最大日期

c# - 如何在Asp.net C#中调用webmethod

javascript - Angular 2 : Returning Promise

javascript - 为什么将 gl.texImage2D 中的格式设置为 gl.LUMINANCE 而不是 gl.RGB 会使由 Canvas 制成的 Blob 的文件大小仅减小约 5%?