it-swarm.com.de

IE10/11 Ajax XHR-Fehler - SCRIPT7002: XMLHttpRequest: Netzwerkfehler 0x2ef3

Ich arbeite seit ein paar Tagen an diesem Problem und greife in dieses Forum, da ich das Gefühl habe, meine Optionen erschöpft zu haben. Ich habe ein auf einer Drupal 7-Website gehostetes Formular und muss die Formularwerte an eine externe URL senden. Das Formular verwendet eine Anforderung POST über das HTTPS-Protokoll über jQuery.AJAX

  • Das Formular funktioniert gut in Chrome, Firefox und Safari
  • Ich erhalte die folgende Fehlermeldung in der IE10 + -Konsole (und der Ajax-Aufruf wird bei Verwendung von IE10 + immer in die Fehlerfunktion übernommen):

SCRIPT7002: XMLHttpRequest: Netzwerkfehler 0x2ef3, Der Vorgang konnte aufgrund des Fehlers 00002ef3 nicht abgeschlossen werden

Ich habe folgendes versucht:

  • contentType hinzufügen:

    // causes all of the jQuery callbacks to error out
    "application/json; charset=utf-8",
    
  • einen Ajax-GET-Aufruf vor dem eigentlichen POST versuchen (wie in einem anderen SO -Thread vorgeschlagen)

  • fügte header( 'Content-Type: application/json; charset=utf-8' ); zur Anfrage hinzu

  • crossDomain: true setzen

Die entsprechenden CORS-Header wurden hinzugefügt und der Formularcode wird unten eingefügt:

$.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);                           
    }        
    });         
  });
});

Ich habe gelesen SCRIPT7002: XMLHttpRequest: Netzwerkfehler 0x2ef3, Vorgang konnte wegen Fehler 00002ef3 nicht abgeschlossen werden

Jede Anleitung wäre hilfreich! VIELEN DANK

33
ForTheWin

Das OP stellte ein WireShark-Capture zur Verfügung, aus dem hervorgeht, dass der Server ein Zertifikat über die HTTPS-CertificateRequest-Nachricht angefordert hat und der Client dann sofort FINd die Verbindung annahm.

Nachdem der Server so konfiguriert wurde, dass kein Clientzertifikat angefordert wird, ist das Problem behoben.

Durch die Verwendung von Fiddler würde das Problem auch verschwinden, da Fiddler ein Clientzertifikat niemals vom Browser anfordert, es sei denn, Sie konfigurieren es.

Ich frage mich, ob nur der betroffene Client-Computer ein übereinstimmendes Zertifikat hatte und/oder ob das Flag withCredentials in der CORS XHR-Anforderung in diesem Szenario relevant ist.

12
EricLaw

Ich habe diesen Fehler zufällig bei IE 8 + 9 + 10 + 11 Ajax-Aufrufen gesehen. Alle anderen Browser hatten das Problem nicht.

Es wird angenommen, dass zwischen den KeepAlive-Verbindungen eine Racebedingung bestand. Ich verwende Apache 2.4.7.

Mit den Apache 2-Standardeinstellungen in /etc/Apache2/Apache2.conf konnte ich den Fehler bei jedem zehnten Ajax-Aufruf reproduzieren:

KeepAlive On
KeepAliveTimeout 5

Lösung: Entweder Einstellung 

KeepAlive off

oder 

KeepAliveTimeout 1

löste das Problem für mich. Ich empfehle jedem, der den 0x2ef3-Network-Fehler hat, auf dem Server KeepAlive aus zu setzen. Wenn der Fehler behoben ist, schalten Sie ihn erneut ein und testen Sie mit den Werten von KeepAliveTimeout. Sie können auch auf ms gesetzt werden .

Es gibt auch eine Möglichkeit, KeepAlive nur für Internet Explorer zu deaktivieren.

9
alfonx

In meiner Umgebung habe ich zuerst einige alte Codes kopiert/eingefügt, um diese zu verwenden. Die "contentType" war also "application/json".

Wenn ich herausfand, dass IE11 über Windows 8 NICHT mit einer sehr hohen Wahrscheinlichkeit funktioniert, solange ich mit der Maus auf "Submit" geklickt hat ... Aber ich fand auch heraus, ob ich die Eingabetaste auf meiner Tastatur gedrückt habe gut mit IE11.

Beachten Sie, dass meine input Elemente und button in einem form Element verschachtelt waren.

Nachdem ich mich eine Weile schwer getan hatte, kam ich zu dieser Seite, konnte aber mein Problem nicht lösen, da ich nichts über Backend-Technologien wusste. Ich war nur ein Front-End-Typ mit begrenztem Wissen.

Dann habe ich viele Modifikationen nacheinander ausprobiert. Plötzlich inspirierten mich die offiziellen API-Dokumente von jQuery. Ich habe den Parameter "contentType" auskommentiert, sodass "contentType" den Standardwert übernimmt, der "application/x-www-form-urlencoded; charset=UTF-8" ist. Dann ist das Problem gelöst.

Hoffe das wird helfen.

6
wu le-chuan

Ich war mit demselben Problem konfrontiert. Für mich schien das Problem nur in IE11 über einen Post-Aufruf aufzutreten. Ich habe den AngularJS-Provider $ http verwendet, um den Anruf zu tätigen. Es scheint, dass dies ein Fehler im Internet Explorer ist und es sich um ein Zertifikat handelt. Die Informationen zum Sicherheitszertifikat werden beim Aufruf von POST nicht ordnungsgemäß geladen. Um dieses Problem zu umgehen, führen Sie vor dem Aufruf des POST - Aufrufs einen GET-Aufruf aus, um das Zertifikat ordnungsgemäß zu laden. __ Schauen Sie sich den folgenden Beispielcode an (der AngularJS verwendet)

$http({
    method: "GET",
    url: "/api/DummyGet"
}).success(
$http({
        method: "POST",
        url: "/api/PostCall",
        data: data
})
);

Weitere Informationen finden Sie unter diesen beiden Links - http://jonnyreeves.co.uk/2013/making-xhr-request-to-https-domains-with-winjs/
- IE10/IE11 bricht Post-Ajax-Anforderung ab, nachdem Cache mit Fehler "Netzwerkfehler 0x2ef3" gelöscht wurde

5

Ich hatte eine ähnliche Situation und nach vielen Nachforschungen war das Problem ein anderes, aber ich möchte es hier posten, in der Hoffnung, dass jemand es hilfreich finden könnte, nach demselben Fehler zu suchen:

Apache hatte eine Verbindungszeit von 5 Sekunden. Internet Explorer 11 unter Windows 7 schien die Tatsache zu ignorieren, dass es keine aktive Sitzung mehr gab, vorausgesetzt, es wären 60 Sekunden. Nachdem ich die Apache-Einstellungen auf ein Timeout von 60 Sekunden geändert hatte, wurde mein Problem behoben.

2
kimyas78

Ich hatte dieses Problem mit einer IIS Anwendung, einer AJAX Post-Anforderung, die zurückgegeben wurde, dass ein Teil der JSON zurückgeschickt wurde.

SCRIPT7002: XMLHttpRequest: Netzwerkfehler 0x2ef3

fehler in der Konsole. Bei anderen Browsern (Chrome, Firefox, Safari) war die gleiche Anforderung AJAX in Ordnung.

Weitere Untersuchungen ergaben, dass die Antwort des Servers den Statuscode nicht enthielt. In diesem Fall hätte es 500 interne Fehler sein müssen.

Dies wurde als Teil einer C # Webanwendung mit einem Service Stack generiert, für den ein expliziter Fehlercode erforderlich ist.

IE schien die Verbindung offen zu lassen, schließlich wurde sie von der Netzwerkschicht geschlossen und die Anforderung "abgebrochen". trotz Erhalt des Inhalts und anderer Header.

Durch das Aktualisieren der Webanwendung, um den Statuscode korrekt zurückzugeben, wurde das Problem behoben.

Möglicherweise gibt es ein Problem damit, wie IE die Kopfzeilen in Posts behandelt.

Hoffe das hilft jemandem!

2
Andrew Keeling

Nun, ich habe den gleichen Fehler auf IE 11 erhalten. Ich habe versucht zu beschreiben, was die Ursache so kurz wie möglich war.

  • site als http anzeigen
  • die Site ruft ajax an https an
  • die SSL war selbstsigniert, aber der Browser hatte noch keine Ausnahme.
  • Nachdem die Zertifikatsausnahme erstellt wurde, funktioniert alles einwandfrei.

Hoffe das hilft jemandem.

1
Trixor

In IE11 und Edge wurde derselbe Fehler angezeigt. Eine jQuery AJAX - Anforderung hat den Fehler XMLHttpRequest: Network Error 0x2ef3, Could not complete the operation due to error 00002ef3. nach genau 300s konsistent ausgelöst. (Chrome & Firefox waren in Ordnung)

Es stellte sich als Idle Timeout auf unserem Load Balancer (F5 in unserem Fall) heraus. Es ist uns gelungen, das Problem mithilfe von Fiddler zu diagnostizieren, was zu einer hilfreicheren Fehlermeldung im Browser führte: Failed to load resource: the server responded with a status of 504 (Fiddler - Receive Failure) Beachten Sie, dass bei laufendem Fiddler dieser Fehler (nach 300 s) in allen Browsern (einschließlich Chrome und Firefox) aufgetreten ist.

1
herdistheword

Ich hatte den gleichen Fehler in ASP.NET MVC und konnte es endlich umgehen. Ich habe ein paar hundert eingebettete Formulare auf der Seite generiert, die jeweils @ Html.AntiForgeryToken () haben. Ich glaube, das führt dazu, dass auf der Client-Seite ein Cookie erstellt wird. Möglicherweise hatte IE keinen Platz mehr für die Cookies (oder etwas, der sich mit IE auskennt). Ich entfernte es und mein Problem ging weg.

1
Ron

Ich möchte nur sagen, was für mich die Ursache dieses Problems war.

Wir haben eine Angular2-App, die unsere NodeJS REST api aufruft. Die Rest-API ruft dann einen anderen Dienst auf (SOAP, glaube ich).

Wir fanden heraus, dass unser SOAP Dienst den Endpunkt (?) Nicht in nur einer Umgebung hatte (wo sonst gearbeitet wurde). Als das NodeJS-API den SOAP Service aufrief, gab der Seifendienst einen Fehler zurück, der besagte, dass X keine Funktion ist. Als die Fehlerantwort an NodeJS zurückgegeben wurde, wurde die Fehler-/Ausnahmebehandlung nicht ordnungsgemäß ausgeführt, sodass der Dienst vollständig abgebrochen wurde. Daher erhielt die Benutzeroberfläche keine Antwort.

0
ganders