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


77

当我进行一些Ajax调用时,我不断收到此错误...

甚至可能与地理编码有关,但我真的不知道如何捕获错误以显示对用户有用的内容……甚至是解决问题的方法,因为它似乎只是在引用某种指针或某种东西: S 0x2ef3

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

图像可能比错误消息更有帮助:

在此处输入图片说明

有什么想法吗?

我的代码在1秒钟内触发了10个ajax调用,由服务器端进行地理编码处理。

错误间歇出现。有时我会得到地理编码的结果,有时会收到该错误。我会说我有10%的时间能得到它。它完全阻止了ajax调用触发jQuery中的错误处理程序。


2
创建一个console.dir(request)来查看XMLHttpRequest对象的内容,检查状态和readystate值以及响应和responseText
MarianoMontañezUreta 2013年

1
这里同样的问题。在带有自签名证书的IISExpress中使用https。奇怪的是,当我在Internet Explorer的“高级”设置中取消选中TLS(所有版本)并检查至少一个SSL版本时,问题消失了。
Frode

Answers:


29

这是对我有用的修复程序。与您的json数据一起发送的无效的mime或错误的字符集导致了该错误。像这样添加字符集,以帮助避免混淆:

$.ajax({
  url:url,
  type:"POST",
  data:data,
  contentType:"application/json; charset=utf-8",
  dataType:"json",
  success: function(){
  ...
  }
});

参考:

jQuery-如何使$ .post()使用contentType = application / json?

由于错误c00ce56e而无法完成操作


5
您在这里混合了两件事:Response.ContentType似乎是服务器端的事情,它确保服务器在响应的内容类型中包含一个字符集。$ .ajax调用中的contentType告诉浏览器在向服务器提交请求时使用哪种内容类型。因此,一个不能替代另一个。
Wichert Akkerman 2013年

1
请注意,此错误(c00ce56e)与OP(00002ef3)不同。我相信00002ef3是stackoverflow.com/a/32106649/1446634
Ewout

我发现在当前的连接尝试中,错误ID在相同的连接尝试上会有所不同,因此我不认为它只是某种偏移。
kungphu 2015年

1
“ ...导致该“错误””
安德鲁·科佩尔

22

我们也遇到了类似的问题。但是,按照前面的评论中所述设置字符集并没有帮助。我们的应用程序每60秒发出一次AJAX请求,而我们的网络服务器nginx在60秒发送Keep-Alive超时。

我们通过将keep-alive超时值设置为75秒来解决此问题。

这是我们认为正在发生的事情:

  1. IE每60秒发出一次AJAX请求,并在请求中设置Keep-Alive。
  2. 同时,nginx知道IE会忽略Keep-Alive超时值,因此它将启动TCP连接关闭过程(对于FF / Chrome,这是由客户端启动的)
  3. IE收到先前发送的请求的关闭连接请求。由于IE不希望这样做,因此会引发错误并中止。
  4. 即使关闭了连接,nginx似乎仍在响应请求。

Wireshark TCP转储将提供更多的清晰度,我们的问题已解决,我们不希望在此上花费更多的时间。


将超时设置为60也可以在我管理的两个站点上为我解决此问题。很高兴为此提供了IE的快速修复。
乔什(Josh)

10

我收到了相同的错误(SCRIPT7002: XMLHttpRequest: Network Error 0x80004004, Operation aborted),在我们的例子中是由于JavaScript的原始政策所致。

我们的Web应用正在通过端口8080对我们的服务器进行JQuery AJAX调用。该调用被SSL拦截并重新路由(由于服务器规则规定传入流量必须使用SSL)。

通过SSL端口加载Web应用后,此问题已解决。


您是如何通过SSL端口加载网络应用的?
Ciaran Gallagher

2

我遇到了这个问题,一个返回一些JSON的AJAX Post请求将失败,最终返回abort,并带有:

SCRIPT7002:XMLHttpRequest:网络错误0x2ef3

控制台中的错误。在其他浏览器(Chrome,Firefox,Safari)上,完全相同的AJAX请求也可以。

跟踪我的问题-调查显示该响应缺少状态码。在这种情况下,应该是500内部错误。这是作为使用服务堆栈的C#Web应用程序的一部分生成的,该服务堆栈要求明确设置错误代码。

IE似乎使连接保持对服务器开放,最终它超时并“中止”了请求。尽管收到了内容和其他标题。

IE处理帖子标题的方式可能存在问题。

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

希望这对某人有帮助!


您可以发布完整错误以供参考吗?Network Error 0x2ef3是一般错误,可能后面跟着更具体的错误代码。
Ewout

2

由于ajax GET调用使用一个长xml字符串作为参数值,因此在我的项目中发生了此问题。通过以下方法解决:将其作为对Java Spring MVC控制器类方法的ajax post调用。

$.ajax({
    url: "controller_Method_Name.html?variable_name="+variable_value,
    type: "POST",
    data:{ 
            "xmlMetaData": xmlMetaData // This variable contains a long xml string
    },
    success: function(response)
    {
        console.log(response);
    }
  });

在Spring MVC Controller类的内部方法:

@RequestMapping(value="/controller_Method_Name")
  public void controller_Method_Name(@RequestParam("xmlMetaData") String metaDataXML, HttpServletRequest request)
{
   System.out.println(metaDataXML);
}

1

我有一段时间这个错误,找到了解决方法。此修复程序适用于Asp.net应用程序,奇怪的是,它仅在IE非兼容模式下失败,但在Firefox和Crome中有效。为所有/特定用户授予对webservice服务文件夹的访问权限解决了该问题。

在web.config文件中添加以下代码:

 <location path="YourWebserviceFolder">
  <system.web>
   <authorization>
    <allow users="*"/>
   </authorization>
  </system.web>
 </location>

1

IE11在尝试使用XMLHttpRequest以下文件上传文件时,收到上述错误后,我偶然发现了这些问题和答案:

var reqObj = new XMLHttpRequest();

//event Handler
reqObj.upload.addEventListener("progress", uploadProgress, false);
reqObj.addEventListener("load", uploadComplete, false);
reqObj.addEventListener("error", uploadFailed, false);
reqObj.addEventListener("abort", uploadCanceled, false);

//open the object and set method of call (post), url to call, isAsynchronous(true)
reqObj.open("POST", $rootUrlService.rootUrl + "Controller/UploadFiles", true);

//set Content-Type at request header.for file upload it's value must be multipart/form-data
reqObj.setRequestHeader("Content-Type", "multipart/form-data");

//Set header properties : file name and project milestone id
reqObj.setRequestHeader('X-File-Name', name);

// send the file
// this is the line where the error occurs
reqObj.send(fileToUpload);

删除线reqObj.setRequestHeader("Content-Type", "multipart/form-data");解决了问题。

注意:此错误在其他浏览器中的显示方式非常不同。即Chrome浏览器显示类似于连接重置的内容,类似于Fiddler报告的内容(由于突然关闭连接导致响应为空)。

此外,仅当从与WebServer(不同于localhost的其他机器)上的另一台机器完成上传时,才会出现此错误。


1

我只想添加为我解决此问题的内容,因为它与上述所有答案都不相同。

引起问题的ajax调用试图传递空数据对象。似乎IE不喜欢这样,但是其他浏览器不介意。

要修复它,我只是data: {},从ajax调用中删除了。


对我来说,删除body: {}固定的。
蓝精灵,


0

将虚拟主机中的KeepAliveTimeout指令提高到60可以解决此问题。


0

在我的asp.net项目中遇到了相同的问题,最后我发现问题是目标函数不是静态的,在我将关键字设置为static之后,此问题已解决。

[WebMethod]
public static List<string> getRawData()

2
这非常适合您的应用程序要求。“静态”的使用将不会与此消息特别相关。也许尝试更多地调查实际问题是什么。那将是真棒!
Jimmyt1988 '17

0

如果这些解决方案都不够“清晰”,则基本上IE / Edge无法正确解析AJAX调用的“数据”字段。您很有可能发送“已编码” JSON对象。

失败原因: "data": "{\"Key\":\"Value\"}"

什么有效: "data":'{"Key":"Value"}'


0

[解决了]

我今天只观察到此错误,但对我来说,错误代码有所不同。

SCRIPT7002:XMLHttpRequest:网络错误0x2efd,由于错误00002efd而无法完成操作。

它是随机发生的,而不是一直发生。但是它注意到的是,如果它用于后续的ajax调用。所以我在ajax调用之间放置了5秒的延迟,它解决了。


2
很难想象这样的情况:延迟ajax调用“ 5秒”将是对此的合理解决方案。
ChiefTwoPencils'Aug

@ChiefTwoPencils,我的立场完全一样。但这是在IE官方帮助页面上进行了大量研究后解决了我的问题的原因。我没有发现任何有用的线索。基本上,这是IE错误,但没有逻辑解决方案。如果找到它,请也更新我。
阿米特·沙
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.