web-dev-qa-db-fra.com

IE11 HTTPS AJAX XMLHttpRequest: Erreur réseau 0x2eff, impossible de terminer l'opération en raison de l'erreur 00002eff

J'ai une demande ajax POST pouvant durer entre 2 secondes et plus de 30 minutes. La demande de publication survient à la suite d'un clic sur un bouton.

Si la demande prend moins d'une minute ou deux, elle revient avec une réponse et tout fonctionne correctement. Toutefois, si la demande dure plus de deux minutes, elle revient avec "Erreur réseau: XMLHttpRequest: erreur réseau 0x2eff, impossible de terminer l'opération en raison de l'erreur 00002eff".

Bien sûr, cela fonctionne bien Firefox et Chrome. 

L'application est déployée sur un serveur JBoss avec SSL activé. L'architecture consiste ici en un équilibreur de charge qui dirige la demande vers deux serveurs Jboss.

Internet Explorer 

Version: 11.0.9600.180971C Mise à jour: 11.0.25

J'ai essayé ce qui suit mais en vain

1) ajax a mis le cache sur false - n'a pas fonctionné

2) Les paramètres de registre modifiés conformément à https://support.Microsoft.com/en-us/kb/813827 - ne fonctionnaient pas, c’est là que cela devient confus, cela suppose qu’il ne s’agit pas d’un IE chose, mais en même temps cela fonctionne sur chrome et ff donc ce n'est pas un serveur aussi

3) Définissez ajax timeout sur 0 - ne fonctionne pas 4) Ajouté e.preventDefault after $ ('# mdlSgn'). Click (function () {comme jQuery Les demandes Ajax sont annulées sans être annulées envoyé

$('#mdlSgn').click(function() {
    $('#cnfdsgl').modal('hide');

     $.ajax({
        url: ajaxUrl,
        type: "POST",
        data: JSON.stringify(input),
        contentType: "application/json; charset=UTF-8",
        dataType: "json",
        success: function(data) {
             /// some logic


        },
        error : function(jqXhr, textStatus, errorThrown) {
            /// some logic
        }
    });

 //some other logic
}); 
20
user1707141

peut durer entre 2 secondes et plus de 30 minutes

Je suppose que cela est dû à la grande quantité de données à transférer.

J'ai créé un gros uploader de fichiers, capable de gérer des fichiers vidéo de plus de 20 Go et pouvant durer plusieurs heures.

D'après mon expérience, le téléchargement de données volumineuses avec une seule requête ajax peut provoquer des blocages étranges du navigateur (par exemple, mon navigateur Chrome se bloque dans environ 20% des tests de chargement). 

Le moyen le plus fiable, ce que j'ai trouvé, est de fractionner les données en morceaux de 1 Mo et de les envoyer séquentiellement au serveur par des requêtes ajax séparées.

6
Ujeenator

Nous passons plusieurs jours à rechercher la cause de ce problème!

  • Dans la console: SCRIPT7002: XMLHttpRequest: erreur réseau 0x2eff, impossible de terminer l'opération en raison de l'erreur 00002eff.
  • Dans l'onglet Réseau de IE/Edge, la requête ayant échoué est considérée comme "En attente ...".
  • XmlHTTPRequest/JQuery renvoie une erreur 404 sur le client, mais le serveur a renvoyé une réponse 200 avec succès.

Nous n’avons eu ce problème que lorsque nous utilisions tous ces éléments:

  • HTTP/2
  • Demandes POST
  • Windows 10
  • IE ou Edge

Apparemment, il s’agit d’un bogue Windows 10 dans la pile HTTP qui est maintenant résolu dans Windows 10 version 1803 (avril 2018) . Donc, ce problème disparaîtra avec le temps pour les personnes/entreprises utilisant les mises à jour automatiques de Windows. utilisé des versions de Windows 10 WorldWide

Nous avons testé cela sur une version plus ancienne et plus récente de Windows 10 et le problème est résolu.

Une solution temporaire pourrait être:

  • désactivez HTTP/2 pour IE et Edge et utilisez HTTPS (côté serveur).
  • utilisez GET (si possible)
  • est-ce que PUT a aussi ce problème?
  • faire quelques tentatives
  • accepter que les utilisateurs d'IE/Edge soient punis ;-)
4
Jo VdB

Dans mon cas, il s’agissait du code de réponse personnalisé (3020) renvoyé par le serveur. Basculé sur 200 et modification de la logique client SPA, cela a résolu le problème.

0
aleha