这个问题让我疯了。我们的网络应用程序使用HTTP POST登录用户,现在IE 10正在中止连接并说:
SCRIPT7002: XMLHttpRequest: Network Error 0x2f7d, Could not complete the operation due to error 00002f7d.
以下是我的所有细节
截屏:
网络流量:
证书很好:
非常感谢任何帮助。我花了很多时间没有运气。正如您所料,这在Chrome和Firefox中运行良好。如果您需要更多有关正在发生的事情的详细信息,请告诉我们。
谢谢,
答案 0 :(得分:4)
证书吊销检查可能会阻止初始JSON POST,但允许在GET回调之后的后续请求
我们最近确定,忽略证书吊销检查失败的URLMon代码(Win8,Win7,可能更早)不适用于内容上传(例如HTTP POST)。因此,如果证书吊销检查失败,则对上载是致命的(例如,IE将显示“无法显示页面”错误消息;其他客户端将显示不同的错误)。但是,这在现实世界中很少发生,因为在大多数情况下,用户首先从目标HTTPS站点执行下载(HTTP GET),因此服务器的证书将缓存为"忽略撤销检查失败"对进程的生命周期进行豁免,因此后续的POST继承该标志并成功。如果当前进程中对HTTPS站点的第一个请求是用于上载(例如,在跨源POST请求中),则上载失败。
以下是它的工作原理:
一点背景:当Web浏览器启动与Web服务器的HTTPS握手时,服务器会立即发送数字证书。服务器的主机名列在数字证书中,浏览器将其与其尝试访问的主机名进行比较。如果这些主机名不匹配,浏览器会引发错误。
如果将单个IP配置为托管多个站点(有时称为“虚拟主机”),则匹配主机名要求会导致问题。通常,虚拟主机服务器检查HTTP主机请求标头以确定要返回的HTTP内容。但是,在HTTPS情况下,服务器必须在从浏览器接收HTTP标头之前提供数字证书。 SNI通过在与安全服务器的初始客户端握手的SNI扩展字段中列出目标服务器的主机名来解决此问题。虚拟主机服务器可以检查SNI扩展以确定将哪个数字证书发送回客户端。
GET可能是operation aborted
场景的受害者:
正在解析HTML文件,并遇到脚本块。脚本块包含内联脚本,该脚本创建新元素并尝试在解析器遇到关闭BODY标记之前将其添加到BODY元素。
<body>
<div>
<script>document.body.appendChild(newElem)</script>
</div>
</body>
请注意,如果我删除了
<div>
元素,则不会发生此问题,因为脚本块的直接父级将是BODY,并且脚本块的直接父级对此免疫问题
<强>参考强>
答案 1 :(得分:1)
<强> [解决] 强>
我今天才发现这个错误。对我来说,错误代码虽然不同。
SCRIPT7002:XMLHttpRequest:网络错误0x2efd,无法完成 由于错误00002efd的操作。
我随机发生,而不是所有时间。但它注意到的是,如果它出现后续的ajax调用..所以我 在ajax调用之间放置了5秒的延迟 并解决了。
还必须在您的网络服务器上配置 CORS 。
答案 2 :(得分:0)
我有同样的问题,我终于解决了。出于某种原因,当使用用于接收登录凭据的OWIN中间件连接到API时,我得到了与您在IE上收到的相同的错误。虽然它连接到任何其他类型的API似乎工作正常。出于某种原因,即使我在API上启用了CORS服务器端,它也不喜欢跨域请求。
无论如何,我能够使用xdomain库来解决问题。确保在加载任何其他javascript之前加载此脚本。
首先在API服务器的根目录上创建一个proxy.html页面并添加此代码。替换占位符网址。
<!DOCTYPE HTML>
<script src="//cdn.rawgit.com/jpillora/xdomain/0.7.3/dist/xdomain.min.js" master="http://insert_client_url_here.com"></script>
现在只需将此添加到您的客户端,替换指向API服务器上的proxy.html页面的占位符网址。
<script src="//cdn.rawgit.com/jpillora/xdomain/0.7.3/dist/xdomain.min.js" slave="http://Insert_Api_Url_Here.com/proxy.html"></script>
答案 3 :(得分:0)
添加延迟不是一个合适的解决方案。 这可能是因为IE会在发出空体请求时将其视为网络错误。 尝试在服务器中添加一个空类作为参数,IE应该开始工作。