web-dev-qa-db-fra.com

Erreur Ajax XHR IE10/11 - SCRIPT7002: XMLHttpRequest: Erreur réseau 0x2ef3

Cela fait quelques jours que je travaille sur ce problème et que je contacte ce forum depuis que j’ai l’impression d’avoir épuisé toutes les possibilités. J'ai un formulaire hébergé sur un site Web Drupal 7 et je dois soumettre les valeurs du formulaire à une URL externe. Le formulaire utilise une requête POST sur le protocole HTTPS via jQuery.AJAX

  • La forme fonctionne bien dans Chrome, Firefox et Safari
  • Je reçois l'erreur suivante dans la console IE10 + (et l'appel ajax entre toujours dans la fonction d'erreur lorsque vous utilisez IE10 +):

SCRIPT7002: XMLHttpRequest: Erreur réseau 0x2ef3, impossible de terminer l'opération en raison de l'erreur 00002ef3

J'ai essayé ce qui suit:

  • ajout de contentType:

    // causes all of the jQuery callbacks to error out
    "application/json; charset=utf-8",
    
  • tenter un appel Ajax GET avant le POST réel (comme suggéré sur un autre thread SO)

  • ajouté header( 'Content-Type: application/json; charset=utf-8' ); à la demande

  • set crossDomain: true

Les en-têtes CORS appropriés ont été ajoutés et le code du formulaire est collé ci-dessous:

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

J'ai lu SCRIPT7002: XMLHttpRequest: Erreur réseau 0x2ef3, impossible de terminer l'opération en raison de l'erreur 00002ef3

Toute orientation serait utile! MERCI

33
ForTheWin

L'OP a fourni une capture WireShark montrant que le serveur a demandé un certificat à l'aide du message HTTPS CertificateRequest et que le client a immédiatement FINd immédiatement la connexion.

Après avoir configuré le serveur pour ne pas demander de certificat client, le problème a disparu.

Si vous utilisiez Fiddler, le problème disparaîtrait également car, à moins que vous ne le configuriez de cette manière, Fiddler ne demandera jamais un certificat client au navigateur.

Je me demande si seul le poste client concerné avait un certificat correspondant et/ou si l'indicateur withCredentials sur la demande CORS XHR est pertinent dans ce scénario.

12
EricLaw

Je voyais cette erreur au hasard avec IE 8 + 9 + 10 + 11 appels Ajax. Tous les autres navigateurs n'avaient pas le problème.

Cela suppose qu’il existait une situation de concurrence critique entre les connexions KeepAlive. J'utilise Apache 2.4.7.

Avec les paramètres par défaut d’Apache 2 dans /etc/Apache2/Apache2.conf, j’ai été en mesure de reproduire l’erreur environ tous les dix appels Ajax:

KeepAlive On
KeepAliveTimeout 5

Solution: soit le réglage 

KeepAlive off

ou 

KeepAliveTimeout 1

résolu le problème pour moi. Je recommande à tous ceux qui rencontrent l’erreur 0x2ef3-Network de placer au premier plan le jeu KeepAlive sur le serveur. Si l'erreur a disparu, réactivez-la et testez-la avec les valeurs de KeepAliveTimeout. Ils peuvent également être réglés sur ms .

Il existe également un moyen de désactiver KeepAlive uniquement pour Internet Explorer.

9
alfonx

Dans mon environnement, j'ai d'abord copié/collé d'anciens codes à utiliser. La "contentType" était donc "application/json".

Quand j’ai découvert que IE11 sur Windows 8 ne fonctionnait PAS avec une probabilité très élevée, tant que je cliquais sur le bouton Soumettre en utilisant ma souris . très bien avec IE11.

Notez que mes input elemnts et submit button ont été imbriqués dans un élément form.

Après avoir lutté pendant un certain temps, je suis arrivé sur cette page, mais je n'ai pas résolu mon problème, car je ne connaissais rien des technologies dorsales. Je n'étais qu'un gars avec des connaissances limitées.

Ensuite, j'ai essayé beaucoup de modifications une par une. Soudain, les documents API officiels de jQuery m'ont inspiré. J'ai commenté le paramètre "contentType" afin que "contentType" prenne la valeur par défaut, qui est "application/x-www-form-urlencoded; charset=UTF-8". Alors le problème est résolu.

J'espère que cela aidera.

6
wu le-chuan

J'avais affronté le même problème. Pour moi, le problème semblait ne se produire que dans IE11 au cours d’un appel Post, j’utilisais le fournisseur AngularJS $ http pour passer l’appel. Il semble qu'il s'agisse d'un bogue dans IE et d'un problème de certificat. Les informations du certificat de sécurité ne sont pas chargées correctement lorsque l'appel POST est effectué. Pour résoudre ce problème, avant de passer l'appel POST, lancez un appel GET pour charger le certificat correctement . Consultez l'exemple de code ci-dessous (il utilise AngularJS).

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

Pour plus d'informations, vous pouvez consulter ces deux liens - http://jonnyreeves.co.uk/2013/making-xhr-request-to-https-domains-with-winjs/
- IE10/IE11 Abandonner la demande post Ajax après effacement du cache avec l'erreur "Erreur réseau 0x2ef3"

5
Pratik Bhattacharya

J'ai eu une situation similaire et après de nombreuses recherches, le problème était différent, mais je veux le poster ici dans l'espoir que quelqu'un trouvera cela utile de chercher la même erreur:

Apache avait un délai de connexion de 5 secondes. Internet Explorer 11 sur Windows 7 semblait ignorer le fait qu’il n’y avait plus de session active, en supposant qu’elle durerait 60 secondes. Après avoir modifié les paramètres Apache pour un délai d'attente de 60 secondes, mon problème a été résolu.

2
kimyas78

J'ai eu ce problème avec une application IIS, une demande de publication AJAX qui a renvoyé un JSON qui échouerait, ce qui rendrait éventuellement l'abandon, avec le message

SCRIPT7002: XMLHttpRequest: Erreur réseau 0x2ef3

erreur dans la console. Sur d'autres navigateurs (Chrome, Firefox, Safari), la même demande AJAX était correcte.

Une enquête plus approfondie a révélé que le code d’état manquait dans la réponse du serveur. Dans ce cas, il aurait dû s'agir d'une erreur interne de 500.

Cette opération était générée dans le cadre d'une application Web C # utilisant une pile de services nécessitant la définition explicite d'un code d'erreur.

IE semblait laisser la connexion ouverte, la couche réseau la ferma finalement et il "abandonna" la requête; malgré la réception du contenu et d'autres en-têtes.

La mise à jour de l'application Web pour renvoyer correctement le code d'état a résolu le problème.

Il y a peut-être un problème avec la façon dont IE gère les en-têtes dans les messages.

J'espère que cela aide quelqu'un!

2
Andrew Keeling

Eh bien, j'ai reçu la même erreur sur IE 11. Essayer de décrire la cause la plus courte possible.

  • affichage du site en http
  • le site fait appel ajax à https
  • le ssl était auto-signé, mais le navigateur n'avait pas encore d'exception pour cela.
  • Après la création de l'exception de certificat, tout fonctionne correctement.

J'espère que ça aide quelqu'un.

1
Trixor

Nous constations la même erreur dans IE11 et Edge. Une demande jQuery AJAX renvoyait l'erreur XMLHttpRequest: Network Error 0x2ef3, Could not complete the operation due to error 00002ef3. de manière cohérente après exactement 300 secondes. (Chrome et Firefox étaient bien)

Il s’est avéré qu’il s’agissait d’un paramètre délai d’inactivité défini sur notre équilibreur de charge (F5 dans notre cas). Nous avons réussi à diagnostiquer le problème à l'aide de Fiddler, ce qui a entraîné un message d'erreur plus utile dans le navigateur: Failed to load resource: the server responded with a status of 504 (Fiddler - Receive Failure) Notez qu'avec Fiddler, nous avons constaté cette erreur (après 300 secondes) dans tous les navigateurs, y compris Chrome et Firefox.

1
herdistheword

J'ai eu la même erreur dans ASP.NET MVC et j'ai finalement réussi à la contourner. Je générais quelques centaines de formulaires incorporés dans la page, chacun ayant @ Html.AntiForgeryToken (). Je pense que cela aboutit à la création d'un cookie côté client. Potentiellement IE manquait d'espace pour les cookies (ou quelque chose comme ça, qui sait avec IE). Supprimé et mon problème est parti.

1
Ron

Je veux juste donner mon point de vue sur la cause fondamentale de ce problème pour moi.

Nous avons une application Angular2, qui appelle notre api NodeJS REST. L'API de repos appelle ensuite un autre service (SOAP, je crois).

Nous avons découvert que notre service SOAP n'avait pas le point de terminaison (?) Dans un seul environnement (fonctionnait partout ailleurs). Lorsque l’API NodeJS appelait le service SOAP, le service soap renvoyait une erreur disant «X n’est pas une fonction». Lorsque la réponse d'erreur a été renvoyée à NodeJS, la gestion des erreurs/exceptions n'a pas été effectuée correctement. Le service a donc été complètement détruit. Ainsi, l'interface utilisateur ne recevait pas de réponse.

0
ganders