尽管服务器正在响应,但 IE Ajax 请求仍超时

尽管服务器正在响应,但 IE Ajax 请求仍超时

这是以下 SO 问题的转发,因为我非常确信这是一个网络/服务器问题,而不是我的代码存在问题。

https://stackoverflow.com/questions/7842530/ie-9-30-second-ajax-post-requests

要点如下:在 IE9(以及 7/8 兼容模式)中通过 GET 或 POST 发出 AJAX 请求时,会发生以下事件:

  1. 在 500 毫秒内,我的服务器响应(Rails/Apache/Phusion 乘客)

  2. IE 立即看到响应主体(如开发者工具网络选项卡所示)

  3. IE 会等待超时时间过去后才显示标题(再次在开发工具中)并通知我的 Javascript

正如 SO 问题所述,看起来我的服务器(或者可能是 Windows 7 中的网络层)直到超时时间过去后才关闭请求。

在我测试过的所有其他浏览器中,它都能完美运行。有人知道为什么会发生这种情况吗?

答案1

好吧,经过一番折腾,我发现在 POST 之后几百毫秒发送 AJAX GET 请求似乎可以解决这个问题。不知道为什么,但它似乎先关闭了之前的连接并让它完成。

因此,我的解决方案如下:

didSend: function(request, response) {
  if (SC.browser.msie && request.get('type') === "POST") {
    setTimeout(function() {
      Core360.Request.getUrl('/test_server').send();
    }, 500);
  }
}

一切似乎都正常了。我仍然很想找出实际的问题,但看到 XMLHttpRequest 对象因为一些愚蠢的原因正在等待调用 readystatechanged...

相关内容