IE11在iFrame的Ajax POST操作期间返回状态0 (XMLHttpRequest: Network Erro

IE11 returns status 0 during Ajax POST operation from an iFrame (XMLHttpRequest: Network Error 0x2ee4)

本文关键字:状态 XMLHttpRequest Erro Network 返回 iFrame Ajax POST 操作 IE11      更新时间:2023-09-26

似乎IE11 11.0.7版本(Win7上的KB2929437, win8.1上的KB2919355)在执行Ajax POST操作时存在问题。该操作返回状态0,并且在F12控制台上出现以下错误:

SCRIPT7002: XMLHttpRequest: Network Error 0x2ee4, Could not complete the operation due to error 00002ee4.

重现此问题的条件如下:

  1. 仅在特定的IE11上发生,即11.0.7版本(KB2929437)Win7, KB2919355 (Win 8.1)
  2. iframe使用https协议加载外部页面(父页面使用http协议)
  3. ajax与方法'POST'被使用
  4. 在IIS
  5. 设置Connection: Keep-Alive头时更经常发生
  6. 更频繁地发生在Win32版本的IE11

我创建了以下jsfiddle来重现这个问题:http://jsfiddle.net/VJ2D6/12/

$(document).ready(function () {
     $('#frame').attr('src', 'https://54.249.142.247/ie11/test.html');
});

请注意,iframe从另一个站点54.249.142.247(由使用IIS7的EC2节点托管)检索其源,因为jsfiddle不托管https。而且,由于我使用的是自签名SSL证书,请先将证书安装到受信任的根,并在Internet选项-高级选项卡中关闭"关于证书地址不匹配的警告"。

在54.249.142.247/ie11/test.html中,我创建了一个按钮,它向一个不存在的位置发起Ajax POST操作。正常情况下,此请求应该返回状态404错误(未找到)。但是在IE11 11.0.7版本的情况下,它经常返回状态0错误,并在F12控制台显示网络错误0x2ee4,"

我把同样的问题贴在Microsoft Connect上:https://connect.microsoft.com/IE/feedback/details/877525/ie11-returns-status-0-during-ajax-post-operation-from-an-iframe-xmlhttprequest-network-error-0x2ee4#tabs

我认为这是一个IE11的bug,但我不能百分之百确定,IE团队也没有确认。请帮我确认一下,这是IE的bug,还是我的JavaScript代码有问题。

更新:

微软表示,他们可以重现这个问题,并将进行调查。

ssl证书无效。要解决此错误,请参见:[Link]

    $.get(window.api + 'Values', null, null).done(function () {//solution for IE shit
    $.ajax({
        type: 'POST',
        url: https://api.yourdomain.com,
        data: yourData,
        success: function (data) {
            //do something
        },
    });
});

当尝试对我们的HTTPS WCF服务(CORS)进行POST调用时,我遇到了同样的问题,看起来这是因为SSL证书。我必须用下面的MakeCert命令行

重新创建我的

makecert.exe -r -pe -n "CN=*.YourDomain.com" -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA通道加密提供程序" -a sha256 -sy 12 "C:'EncryptionCert.cer"

将创建的证书安装到客户端和服务器可信根证书Auth中。

在为我的站点绑定选择了这个证书之后,我能够成功地在IE 11中调用我的HTTPS WCF服务

我也有同样的问题。首先,我在发布前使用get请求。它解决了问题。但当我深入研究时,我发现它是在互联网选项-"高级选项

"
  1. 取消服务器证书撤销检查*
  2. 取消对发行者证书撤销的检查*
  3. 单击ok
  4. 重新启动浏览器

i resolved the issue

输入图片描述