IE11 HTTPS AJAX XMLHttpRequest:网络错误0x2eff,由于错误00002eff而无法完成操

IE11 HTTPS AJAX XMLHttpRequest: Network Error 0x2eff, Could not complete the operation due to error 00002eff

本文关键字:错误 00002eff 于错误 XMLHttpRequest AJAX HTTPS 网络 0x2eff IE11      更新时间:2023-09-26

我有一个ajax POST请求,它可能需要2秒到30多分钟。张贴请求是由于点击按钮而产生的

如果请求的时间不到一两分钟,它会返回一个响应,并且一切正常。但是,如果请求花费的时间超过两分钟,则返回"网络错误:XMLHttpRequest:网络错误0x2eff,由于错误00002eff而无法完成操作"。

当然,它在Firefox和Chrome上运行良好。

该应用程序部署在启用了SSL的JBoss服务器上。这里的体系结构是,我们有一个负载均衡器,它将请求路由到两个Jboss服务器。

Internet Explorer

版本:11.0.9600.180971C更新:11.0.25

我尝试了以下操作,但没有成功

1) ajax将缓存设置为false-不起作用

2) 根据更改了注册表设置https://support.microsoft.com/en-us/kb/813827-不起作用,这是它令人困惑的地方,这表明它不是IE的东西,但同时它在chrome和ff上起作用,所以它也不是服务器的东西

3) 将ajax超时设置为0-不起作用4) 在$('#mdlSgn').click(function()之后添加e.preventDefault{根据jQuery Ajax请求被取消而未发送

$('#mdlSgn').click(function() {
    $('#cnfdsgl').modal('hide');
     $.ajax({
        url: ajaxUrl,
        type: "POST",
        data: JSON.stringify(input),
        contentType: "application/json; charset=UTF-8",
        dataType: "json",
        success: function(data) {
             /// some logic

        },
        error : function(jqXhr, textStatus, errorThrown) {
            /// some logic
        }
    });
 //some other logic
}); 

我们花了好几天的时间来寻找这个问题的原因!

  • 在控制台中:SCRIPT7002:XMLHttpRequest:网络错误0x2eff,由于错误00002eff而无法完成操作
  • 在IE/Edge的网络选项卡中,我们看到失败的请求为"挂起…"
  • XmlHTTPRequest/JQuery在客户端返回404错误,但服务器成功返回了200响应
  • 未返回响应标头

我们只有在使用所有这些时才遇到这个问题:

  • HTTP/2
  • POST请求
  • Windows 10
  • IE或Edge

显然,这是HTTP堆栈中的一个Windows 10错误,现已在Windows 10版本1803(2018年4月)中解决。因此,对于使用Windows自动更新的人/公司来说,这个问题通常会随着时间的推移而消失。使用Windows 10版本的WorldWide

我们在一个旧版本和新版本的Windows 10上测试了这一点,它确实得到了解决。

一些临时解决方案可能是:

  • 禁用IE和Edge的HTTP/2并使用HTTPS(服务器端更改)
  • 使用GET(如果可能)
  • PUT也有这个问题吗
  • 如果没有返回响应标头,请重试
  • 接受IE/Edge用户将受到惩罚;-)

可能需要2秒到30多分钟

我想这是因为需要传输大量数据。

我创建了一个大文件上传器,可以处理20GB+的视频文件,可能会持续几个小时。

根据我的经验,用单个ajax请求上传大数据可能会导致奇怪的浏览器崩溃(例如,我的Chrome浏览器在大约20%的上传测试中崩溃)。

我发现,最可靠的方法是将数据分割成1MB的块,并通过单独的ajax请求将它们依次发送到服务器。

在我的例子中,它是从服务器返回的自定义响应代码(3020)。将其切换到200,并修改了SPA客户端逻辑,这解决了问题。