Меню

Xmlhttprequest сетевая ошибка 0x2eff не удалось завершить действие ошибка 00002eff

Вопрос:

У меня есть запрос ajax POST, который может занимать от 2 секунд до 30 + минут. Запрос на отправку происходит в результате нажатия кнопки

Если запрос занимает менее минуты или двух, он возвращается с ответом, и все работает нормально. Однако, если запрос занимает более двух минут, он возвращается с “Ошибка сети: XMLHttpRequest: Ошибка сети 0x2eff, не удалось завершить операцию из-за ошибки 00002eff”.

Конечно, он отлично работает Firefox и Chrome.

Приложение развертывается на сервере JBoss с включенным SSL. Архитектура здесь заключается в том, что у нас есть балансировщик нагрузки, который направляет запрос на два сервера Jboss.

Internet Explorer

Версия: 11.0.9600.180971C
Обновление: 11.0.25

Я пробовал следующее, но тщетно

1) ajax set cache to false – не работает

2) Изменены настройки реестра в соответствии с https://support.microsoft.com/en-us/kb/813827 – не работает, вот где это запутывает, thissuggests это не вещь IE, но в то же время это работает на chrome и ff, поэтому это не серверная вещь

3) Установите тайм-аут ajax на 0 – не работает
4) Добавлен e.preventDefault после $(‘# mdlSgn’). Click (function() {as jQuery Запросы Ajax отменяются без отправки

$('#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
});

Ответ №1

может занимать от 2 до 30 минут

Я предполагаю, что это связано с большим объемом передаваемых данных.

У меня есть большой файловый загрузчик, который обрабатывает файлы размером 20 ГБ + и может длиться несколько часов.

По моему опыту – загрузка больших данных с помощью одного запроса ajax может вызвать странные сбои браузера (например, мой браузер Chrome сбой примерно в 20% тестов загрузки).

Самый надежный способ, который я нашел, – разделить данные на куски 1 МБ и отправить их последовательно на сервер с помощью отдельных запросов ajax.

Ответ №2

Мы проводим несколько дней в поисках причины этой проблемы!

  • В консоли: SCRIPT7002: XMLHttpRequest: Сетевая ошибка 0x2eff. Не удалось завершить операцию из-за ошибки 00002eff.
  • На вкладке сети IE/Edge мы видим неудавшийся запрос как “Ожидание…”
  • XmlHTTPRequest/JQuery возвращает ошибку 404 на клиенте, но сервер успешно возвратил ответ 200.

У нас была эта проблема только при использовании всего этого:

  • HTTP/2
  • POST-запросы
  • Windows 10
  • IE или Edge

По-видимому, это ошибка Windows 10 в стеке HTTP, которая теперь решается в Windows 10 версии 1803 (апрель 2018 года). Поэтому обычно эта проблема исчезает со временем для людей/компаний, использующих автоматические обновления Windows. Используется Windows 10 версии WorldWide

Мы проверили это на более старой и новой версии Windows 10, и она действительно решена.

Некоторое временное решение может быть:

  • отключите HTTP/2 для IE и Edge и используйте HTTPS (на стороне сервера).
  • используйте GET (если возможно)
  • PUT также имеет эту проблему?
  • сделать несколько попыток
  • принять, что пользователи IE/Edge будут наказаны 😉

Ответ №3

В моем случае это был пользовательский код ответа (3020), возвращенный с сервера. Переключил его на 200 и изменил логику клиента SPA, это решило проблему.

I have an ajax POST request that can take anywhere between 2 seconds to 30+ minutes. The post request occurs as a result of button click

If the request takes less than a minute or two, it comes back with a response and everything works fine. However if the request takes longer than two minutes it comes back with «Network error: XMLHttpRequest: Network Error 0x2eff, Could not complete the operation due to error 00002eff».

Ofcourse, it works fine Firefox and Chrome.

The application is deployed on a JBoss server with SSL enabled. The architecture here is that we have a load balancer that routes the request to two Jboss servers.

Internet Explorer

Version: 11.0.9600.180971C
Update: 11.0.25

I have tried the following but in vain

$('#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
}); 

I have a single page html and Angularjs file.

App.js

angular
.module('vod', [])
.controller('moviesController', ['$http', function ($http) {
    var self = this;
    self.movies = [];
    $http.get('http://localhost:8080/movies/').then(function (response) {
        self.movies = response.data;
    }, function (errResponse) {
        console.error('Error while fetching movies');
    });
}]);

HTML

<!DOCTYPE html>
<html>
    <head>
        <title>Angular</title>
        <script src="angular.min.js"></script>
        <script src="app.js"></script>
    </head>
    <body ng-controller="moviesController as ctrl"
          ng-app="vod">
        <div ng-repeat="movie in ctrl.movies">
            <span ng-bind="movie.title"></span>
        </div>
    </body>
</html>

It works well on Chrome producing the movie titles but gives the errors
SCRIPT7002: XMLHttpRequest: Network Error 0x2, The system cannot find the file specified
and
SCRIPT7002: XMLHttpRequest: Network Error 0x2efd, Could not complete the operation due to error 00002efd. on Microsoft Edge.

I have a single page html and Angularjs file.

App.js

angular
.module('vod', [])
.controller('moviesController', ['$http', function ($http) {
    var self = this;
    self.movies = [];
    $http.get('http://localhost:8080/movies/').then(function (response) {
        self.movies = response.data;
    }, function (errResponse) {
        console.error('Error while fetching movies');
    });
}]);

HTML

<!DOCTYPE html>
<html>
    <head>
        <title>Angular</title>
        <script src="angular.min.js"></script>
        <script src="app.js"></script>
    </head>
    <body ng-controller="moviesController as ctrl"
          ng-app="vod">
        <div ng-repeat="movie in ctrl.movies">
            <span ng-bind="movie.title"></span>
        </div>
    </body>
</html>

It works well on Chrome producing the movie titles but gives the errors
SCRIPT7002: XMLHttpRequest: Network Error 0x2, The system cannot find the file specified
and
SCRIPT7002: XMLHttpRequest: Network Error 0x2efd, Could not complete the operation due to error 00002efd. on Microsoft Edge.

Я работаю над этой проблемой в течение нескольких дней и обращаюсь к этому форуму, так как я чувствую, что исчерпал свои возможности. У меня есть форма, размещенная на веб-сайте Drupal 7, и мне нужно отправить значения формы на внешний url. Форма использует запрос POST по протоколу HTTPS через jQuery.AJAX

  • форма отлично работает в Chrome, Firefox и Safari
  • Я получаю следующую ошибку в консоли IE10+ (и вызов ajax всегда переходит в ошибку функция при использовании IE10+):

SCRIPT7002: XMLHttpRequest: ошибка сети 0x2ef3, не удалось завершить операцию из-за ошибки 00002ef3

Я пробовал следующие:

  • добавление contentType:

    // causes all of the jQuery callbacks to error out
    "application/json; charset=utf-8",
    
  • попытка вызова Ajax GET перед фактическим сообщением (как предложено в другом потоке SO)

  • добавил header( 'Content-Type: application/json; charset=utf-8' ); к запрос

  • set crossDomain: true

добавлены соответствующие заголовки CORS, а код формы вставлен ниже:

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

Я читал
SCRIPT7002: XMLHttpRequest: ошибка сети 0x2ef3, не удалось завершить операцию из-за ошибки 00002ef3

любое руководство было бы полезно! Спасибо

10 ответов


OP предоставил захват WireShark, показывающий, что сервер запросил сертификат с использованием HTTPS CertificateRequest сообщение и клиент тогда немедленно FINд подключение.

после настройки сервера, чтобы не запрашивать сертификат клиента, проблема ушла.

использование Fiddler также заставит проблему исчезнуть, потому что, если вы не настроите ее для этого, Fiddler никогда не будет запрашивать сертификат клиента из браузера.

Я интересно, есть ли только у затронутой клиентской машины соответствующий сертификат и/или есть ли withCredentials флаг в запросе CORS XHR релевантен в этом сценарии.


Я видел эту ошибку случайно с IE 8+9+10+11 AJAX-вызовы. Все остальные браузеры не имели проблемы.

предположим, что между KeepAlive связями существует расовое условие. Я использую Apache 2.4.7.

с настройками Apache 2 по умолчанию в / etc/apache2 / apache2.conf я смог воспроизвести ошибку о каждом десятом вызове Ajax:

KeepAlive On
KeepAliveTimeout 5

решение: либо параметр

KeepAlive off

или

KeepAliveTimeout 1

решил проблему для меня. Я рекомендую всем, кто испытывает 0x2ef3-ошибка сети в кулак set KeepAlive off на сервере. Если ошибка исчезла, включите ее снова и проверьте со значениями интервала keepalivetimeout. они также могут быть установлены в MS.

существует также способ отключить KeepAlive только для Internet Explorer.


в моей среде я сначала скопировал / вставил некоторые старые коды для использования. Так что «contentType» был "application/json".

когда я узнал, что IE11 над windows 8 не работает с очень высокой вероятностью, если я нажал кнопку отправки с помощью мыши.
Но я также узнал, что если я нажал клавишу enter на клавиатуре, то он отлично работает с IE11.

обратите внимание, что мой input elemnts и представить button были вложены в form элемент.

после борясь некоторое время, я пришел к этой странице, но не решил свою проблему, потому что я ничего не знал о бэкэнд-технологиях. Я был просто передовым парнем с ограниченными знаниями.

затем я попробовал много модификаций один за другим. Внезапно официальные документы API jQuery вдохновили меня. Я прокомментировал «contentType параметр» так, что «contentType» принимает значение по умолчанию, которым является "application/x-www-form-urlencoded; charset=UTF-8". Тогда проблема решена.

надеюсь, это поможет.


я столкнулся с такой же проблемой. Для меня проблема, казалось,происходила только в IE11 по вызову Post, я использовал AngularJS provider $http для вызова. Кажется, что это ошибка в IE, и это проблема с сертификатом. Сведения о сертификате безопасности загружаются неправильно при выполнении POST-вызова. В качестве обходного пути перед выполнением POST-вызова выполните вызов GET для правильной загрузки сертификата.
Взгляните на пример кода ниже (он использует В AngularJS)

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

для получения дополнительной информации, вы можете взглянуть на эти две ссылки
-http://jonnyreeves.co.uk/2013/making-xhr-request-to-https-domains-with-winjs/
-IE10 / IE11 прервать запрос POST Ajax после очистки кэша с ошибкой «сетевая ошибка 0x2ef3»

5

автор: Pratik Bhattacharya


У меня была аналогичная ситуация, и после многих исследований проблема была другой, но я хочу опубликовать ее здесь в надежде, что кто-то может найти ее полезной, ища ту же ошибку:

у Apache был тайм-аут соединения 5 секунд. Internet explorer 11 на Win 7, казалось, игнорировал тот факт, что активного сеанса больше не было, предполагая, что это будет 60 секунд. После изменения настроек Apache на тайм-аут 60 секунд моя проблема была решена.


У меня была эта проблема с приложением IIS, запрос Ajax Post, который вернул некоторый JSON, потерпел неудачу, в конечном итоге вернув abort, с:

SCRIPT7002: XMLHttpRequest: сетевая ошибка 0x2ef3

ошибки в консоли. В других браузерах (Chrome, Firefox, Safari) тот же самый запрос AJAX был в порядке.

дальнейшее расследование показало, что отклик от сервера отсутствует код состояния — в этом случае он должен иметь была внутренняя ошибка 500.

это создавалось как часть веб-приложения C# с использованием стека служб, который требует явного задания кода ошибки.

IE, казалось, оставил соединение открытым, в конце концов сетевой слой закрыл его, и он «прервал» запрос; несмотря на получение содержимого и других заголовков.

обновление веб-приложения для правильного возврата кода состояния Исправлена проблема.

возможно, есть проблема с тем, как IE обрабатывает заголовки в сообщениях.

надеюсь, это кому-то поможет!


У меня была такая же ошибка в ASP.NET MVC и, наконец, смог обойти его. Я создавал пару сотен встроенных форм на странице, каждая из которых имела @Html.AntiForgeryToken() . Я считаю, что это приводит к созданию cookie на стороне клиента. Потенциально IE не хватало места для куки (или что-то, кто знает с IE). Удалил его, и моя проблема ушла.


Ну, я получил ту же ошибку в IE 11. Пытаюсь описать причину как можно короче.

  • отображение сайта как http
  • сайт делает ajax вызов https
  • ssl был самоподписан,но браузер не имел для него исключений.
  • после создания исключения сертификата все работает нормально.

надеюсь, что это кому-то поможет.


мы видели ту же ошибку в IE11 и Edge. Запрос jQuery AJAX выдавал ошибку XMLHttpRequest: Network Error 0x2ef3, Could not complete the operation due to error 00002ef3. последовательно после ровно 300s. (Chrome и Firefox были в порядке)

оказался ожидания установка на нашем балансировщике нагрузки (F5 в нашем случае). Нам удалось диагностировать проблему с помощью Fiddler, что привело к более полезное сообщение об ошибке в браузере: Failed to load resource: the server responded with a status of 504 (Fiddler - Receive Failure) обратите внимание, что при запуске Fiddler мы видели эту ошибку (после 300s) во всех браузерах, включая Chrome и Firefox.


просто хочу дать мое мнение о том, что было основной причиной этой проблемы для меня.

У нас есть приложение Angular2, которое вызывает наш api REST NodeJS. Затем REST API вызывает другую службу (SOAP, я считаю).

мы обнаружили, что наш SOAP-сервис не имеет конечной точки(?) только в одной среде (работал везде). Когда api NodeJS вызывал службу SOAP, служба soap возвращала сообщение об ошибке «X не является функцией». Когда ответ на ошибку был возвращен NodeJS, у него не было правильной обработки ошибок/исключений, поэтому он полностью убивал службу. Таким образом, пользовательский интерфейс не получал ответа.


Hi ,all

I am beginner for windows 8 app development.

I created simple project on domain name called www.aaa.com and also hosted web services on same domain. at that time i was able to access web services on my application code using AJAX. Then i created same project on another domain called www.bbb.com then
i tried to access wcf services from www.aaa.com domain. at that time my javaScript console is throwing this error «SCRIPT7002: XMLHttpRequest: Network Error 0x2efd, Could not complete the operation due to error 00002efd.
File: default.html«. I tried some thing on both end on web services project as well as windows 8 app.

AT app side in package.appxmanifest file i added below code.

<Capabilities>
    <Capability Name=»privateNetworkClientServer» />
    <Capability Name=»internetClient» />
  </Capabilities>

AT web services side in web.config file i added following settings.

<serviceHostingEnvironment aspNetCompatibilityEnabled=»true»
        multipleSiteBindingsEnabled=»true» />

    <standardEndpoints>
      <webScriptEndpoint>
        <standardEndpoint name=»» crossDomainScriptAccessEnabled=»true» />
      </webScriptEndpoint>
    </standardEndpoints>

but above all diagnostics are not working for me.

and one more thing at www.bbb.com domain in sample android app while i am trying to consume my wcf services it is working fine. the problem is specifically for windows 8 app only.

Here is sample code which i had written in default.html file

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>DemoWebService</title>

    <!-- DemoWebService references -->
    <script src="/js/default.js"></script>
    


    <script>

        var personNameVar = "Hardik";
        var dataIn = '{' + '"personName":"' + personNameVar + '"}';
        $.ajax({
            url: "http://SomeIP:SomePort/Service1.svc/HelloWorld",
            type: "POST",
            contentType: "application/json; charset=utf-8",
            data: dataIn,
            dataType: "json",
            success: function (data) {
                var object = JSON.parse(data.d);
                
                if (object.Error == '') {
                    $('body').html(object.Response);
                }
            },
            error: function (error) {
                $('body').html(error);
            }
        });


       
</script>

</head>
<body>
    
</body>
</html>

so is there any help. I am eagerly waiting for it.

P.S I am accessing www.aaa.com web services using VPN.

Thanks in advance,

Hardik

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Xml файл не прошел форматный контроль ошибка 503 как исправить
  • Xml карта сайта yoast seo ошибка 404