Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IE10/11 Ajax XHR error - SCRIPT7002: XMLHttpRequest: Network Error 0x2ef3

I've been working on this problem for a few days and reaching out on this forum since I feel like I've exhausted my options. I have a form hosted on a Drupal 7 website and need to submit the form values to an external url. The form uses a POST request over the HTTPS protocol via jQuery.AJAX

  • Form works fine in Chrome, Firefox, and Safari
  • I am receiving the following error in IE10+ console (and the ajax call always goes into the error function when using IE10+):

SCRIPT7002: XMLHttpRequest: Network Error 0x2ef3, Could not complete the operation due to error 00002ef3

I've tried the following:

  • adding contentType:

    // causes all of the jQuery callbacks to error out "application/json; charset=utf-8", 
  • attempting an Ajax GET call before the actual POST (as suggested on another SO thread)

  • added header( 'Content-Type: application/json; charset=utf-8' ); to the request

  • set crossDomain: true

The appropriate CORS headers have been added and the form code is pasted below:

$.ajax({     url: "[URL]", //the page to receive the form data       crossDomain: true,     type: "POST",     data: dataString, //posting to API      dataType: "json", //the data type the function should expect back from the server          success: function(data) {                  if (data.response_status == "1") { //error for at least 1 field              //display error message               }              else {               //display thank you label next to input              }          } else {            //All form fields completed successfully! Redirect user to Thank you confirmation page                     }       },     error: function(jqXHR, textStatus, errorThrown) {              alert("there is an error!");              console.log("in error section");              console.log("jqXHR: " + jqXHR);              console.log("jqXHR.responseText: " + jqXHR.responseText);              console.log("textStatus: " + textStatus);              console.log("errorThrown: " + errorThrown);              data = $.parseJSON(jqXHR.responseText);              console.log("parseJSON data: " + data);                                }             });            }); }); 

I've read SCRIPT7002: XMLHttpRequest: Network Error 0x2ef3, Could not complete the operation due to error 00002ef3

Any guidance would be helpful! THANKS

like image 487
ForTheWin Avatar asked Apr 18 '14 00:04

ForTheWin


2 Answers

I was seeing this error randomly with IE 8+9+10+11 Ajax calls. All other browsers did not have the problem.

It suppose there was a race-condition between KeepAlive connections. I am using Apache 2.4.7.

With the Apache 2 default settings in /etc/apache2/apache2.conf I was able to reproduce the error about every tenth Ajax call:

KeepAlive On KeepAliveTimeout 5 

Solution: Either setting

KeepAlive off 

or

KeepAliveTimeout 1 

solved the problem for me. I recommend anyone experiencing the 0x2ef3-Network error to fist set KeepAlive off on the server. If the error is gone, switch it on again and test with the values of KeepAliveTimeout. They can also be set to ms.

There is also a way to disable KeepAlive only for Internet Explorer.

like image 35
alfonx Avatar answered Oct 04 '22 19:10

alfonx


The OP provided a WireShark capture showing that the server requested a certificate using the HTTPS CertificateRequest message and the client then immediately FINd the connection.

After configuring the server not to request a client certificate, the problem went away.

Using Fiddler also would make the problem disappear because, unless you configure it to do so, Fiddler will never request a client certificate from the browser.

I'm wondering if only the affected client machine had a matching certificate and/or whether the withCredentials flag on the CORS XHR request is relevant in this scenario.

like image 65
EricLaw Avatar answered Oct 04 '22 20:10

EricLaw