IE10 / IE11在清除缓存后中止后发布Ajax请求,并显示错误“网络错误0x2ef3”

时间:2013-05-01 04:55:19

标签: javascript ajax post xmlhttprequest internet-explorer-10

  

SCRIPT7002:XMLHttpRequest:网络错误0x2ef3,无法完成   由于错误00002ef3

的操作

目前没有有效的解决方案。

  

更新:在IE11上也注意到了。

经过越来越多的调查,我得到了这样的结果:

  1. 问题是我的应用程序特有的,它不会发生在Facebook上。
  2. 问题与每个主机的最大请求数无关(我做了充斥服务器的示例页面,IE10能够同时处理多达8-10个请求,在我的应用程序中我也尝试过ajax连续请求,也失败了。)
  3. 问题特定于POST请求。
  4. 问题并非特定于所使用的JS库(我尝试从控制台直接使用XMLHttpRequest也失败了。)
  5. 失败发生在xhr.send(),xhr.readyState = 4和xhr.onreadystatechange触发后。
  6. 失败与任何内容类型,正确请求或服务器配置无关。它只是客户端,请求虚拟页面将失败,只有最小的XHR,只需xhr.open和xhr.send。
  7. 主要是在清除浏览器缓存后发生的。
  8. 在POST之前执行GET请求无法解决此问题。
  9. 我的问题是:

    1. 浏览器缓存如何影响POST ajax请求?
    2. 是否有任何机构与IE开发人员联系,告诉我们这个错误'网络错误0x2ef3'映射到了什么?
    3. 现在,我正在做的临时解决方案是,如果HTTP状态代码为零,则只重试最多3次。但它非常难看,因为即使上传请求有时也会失败,对于那些重试的请求来说会变慢,有时需要额外的100毫秒。

      重现的步骤:

      1. 确保禁用fiddler或代理。
      2. http://ie10.laiths.name/#!login
      3. 打开IE10控制台,删除浏览器缓存。
      4. 尝试此无效登录:random@rand.com/random
      5. 3-4次(清除缓存/无效登录)后,您将看到此错误:SCRIPT7002:XMLHttpRequest:网络错误0x2ef3,由于错误00002ef3无法完成操作。
      6. 我的IE版本:

        • Win7 IE10版本:10.0.9200.16618
        • 更新版本:10.0.6(KB2838727)

        现在我正在解决这个问题,如果browser is IE10&& Request is POST&& HTTP status code is 0

        如果有人可以帮我删除我丑陋的解决方案,我将不胜感激,因为有了这样的解决方案,即使请求进入服务器并且它返回0我也会重试(我试图通过测量之间的时间来避免这种情况) xhr.send及其回调但它不可靠),如果IE10在comptMode中怎么样,如果IE11有同样的问题,加上那个性能,它将占用我的机器〜每次重试之间的170ms。

2 个答案:

答案 0 :(得分:11)

由于安全证书问题,可能会发生这种情况。如果清除缓存,则会丢失部分(如果不是全部)证书信息。

您可以在http://www.jonnyreeves.co.uk/2013/making-xhr-request-to-https-domains-with-winjs/

中找到更多信息(以及解决方法)

基本上它说你必须在POST请求之前进行GET才能更新证书信息。

答案 1 :(得分:1)

我遇到了这个问题,一个返回一些JSON的AJAX Post请求会失败,最终会返回abort,其中包含:

  

SCRIPT7002:XMLHttpRequest:网络错误0x2ef3

控制台中出现

错误。在其他浏览器(Chrome,Firefox,Safari)上,完全相同的AJAX请求也没问题。

进一步调查显示,响应缺少状态代码 - 在这种情况下,应该是500内部错误。

这是使用服务堆栈生成的C#Web应用程序的一部分,需要显式设置错误代码。

IE似乎让连接保持打开状态,最终网络层关闭了它并且它已经中止了#39;请求;尽管收到了内容和其他标题。

更新Web应用程序以正确返回状态代码解决了问题。

IE可能会在帖子中处理标题时出现问题。

希望这有助于某人!