Я работаю над этой проблемой в течение нескольких дней и выхожу на этот форум, так как чувствую, что исчерпал свои возможности. У меня есть форма, размещенная на веб-сайте Drupal 7, и вам нужно отправить значения формы во внешний URL. Форма использует запрос POST по протоколу HTTPS через jQuery.AJAX
SCRIPT7002: XMLHttpRequest: ошибка сети 0x2ef3, не удалось завершить операцию из-за ошибки 00002ef3
Я пробовал следующее:
добавление contentType:
// causes all of the jQuery callbacks to error out "application/json; charset=utf-8",
попытка вызова Ajax GET перед фактическим POST (как предложено в другом потоке 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
Любое руководство было бы полезно! БЛАГОДАРЯ
OP обеспечил захват WireShark, показывающий, что сервер запросил сертификат с помощью сообщения HTTPS CertificateRequest
и клиента, а затем немедленно подключился к нему.
После настройки сервера, чтобы не запрашивать сертификат клиента, проблема исчезла.
Использование Fiddler также устранит проблему, потому что, если вы не настроите ее на это, Fiddler никогда не будет запрашивать сертификат клиента из браузера.
Мне интересно, имел ли только withCredentials
клиентский компьютер соответствующий сертификат и / или был ли withCredentials
флаг withCredentials
в 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-Network, чтобы кулак установить KeepAlive на сервере. Если ошибка исчезла, включите ее снова и проверьте значения KeepAliveTimeout . Они также могут быть установлены на ms .
Существует также способ отключить KeepAlive только для Internet Explorer.
Я столкнулся с той же проблемой. Для меня проблема, похоже, возникала только в IE11 над почтовым вызовом, я использую провайдера AngularJS $ 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 Abort Post Ajax-запрос после очистки кэша с ошибкой «Ошибка сети 0x2ef3»
В моей среде я сначала скопировал / вставил некоторые старые коды, чтобы использовать их. Таким образом, « contentType
» был "application/json"
.
Когда я узнал, что IE11 над окнами 8 НЕ работает с очень высокой вероятностью, пока я нажал кнопку отправки с помощью мыши. Но я также обнаружил, что если я нажал клавишу ввода на клавиатуре, то с IE11 все будет хорошо.
Обратите внимание, что мои элементы input
и button
отправки были вложены в элемент form
.
Потерпев некоторое время, я пришел на эту страницу, но не решил свою проблему, потому что я ничего не знал о бэкэнд-технологиях. Я был просто парнем с ограниченными знаниями.
Затем я попробовал много модификаций один за другим. Вдруг официальные документы API jQuery вдохновили меня. Я прокомментировал параметр « contentType
», чтобы « contentType
» contentType
значение по умолчанию, которое "application/x-www-form-urlencoded; charset=UTF-8"
. Тогда проблема решена.
Надеюсь, это поможет.
У меня была аналогичная ситуация, и после долгих исследований проблема была другой, но я хочу опубликовать ее здесь в надежде, что кто-то может найти ее полезной для поиска той же ошибки:
У Apache был тайм-аут соединения 5 секунд. Internet explorer 11 на Win 7, казалось, игнорировал тот факт, что активного сеанса больше не было, предполагая, что это будет 60 секунд. После изменения настроек Apache до таймаута 60 секунд моя проблема была решена.
У меня была эта проблема с приложением IIS, запрос AJAX Post, который вернул некоторый JSON, потерпел неудачу, в конечном итоге вернув прерывание, с:
SCRIPT7002: XMLHttpRequest: ошибка сети 0x2ef3
Ошибка в консоли. В других браузерах (Chrome, Firefox, Safari) точно такой же запрос AJAX был в порядке.
Дальнейшее расследование показало, что ответ от сервера отсутствовал в коде состояния – в этом случае это должно было быть 500 внутренних ошибок.
Это создавалось как часть веб-приложения C # с использованием стека служб, для которого явно должен быть установлен код ошибки.
Похоже, что IE оставил соединение открытым, в итоге сетевой слой закрыл его, и он «прервал» запрос; несмотря на получение контента и других заголовков.
Обновление веб-приложения для правильного возврата кода состояния устранило проблему.
Возможно, есть проблема с тем, как IE обрабатывает заголовки в сообщениях.
Надеюсь, это поможет кому-то!
У меня была такая же ошибка в ASP.NET MVC и, наконец, удалось обойти ее. Я создавал пару сотен встроенных форм на странице, каждый из которых имеет @ Html.AntiForgeryToken (). Я считаю, что это приводит к созданию cookie на стороне клиента. Потенциально IE не хватало места для файлов cookie (или что-то, кто знает с IE). Удалили, и моя проблема исчезла.
Хорошо, я получил ту же ошибку в IE 11. Попытка описать, что вызывало ее как можно короче.
Надежда помогает кому-то.
Мы наблюдали ту же ошибку в IE11 и Edge. Запрос jQuery AJAX XMLHttpRequest: Network Error 0x2ef3, Could not complete the operation due to error 00002ef3.
ошибку XMLHttpRequest: Network Error 0x2ef3, Could not complete the operation due to error 00002ef3.
последовательно после ровно 300 секунд. (Chrome и Firefox были в порядке)
Оказалось, что на нашем балансировщике нагрузки (F5 в нашем случае) установлен тайм-аут простоя . Нам удалось диагностировать проблему с помощью Fiddler, что привело к появлению более полезного сообщения об ошибке в браузере: Failed to load resource: the server responded with a status of 504 (Fiddler - Receive Failure)
Обратите внимание, что при запуске Fiddler мы увидели эту ошибку (после 300 секунд) во всех браузерах, включая Chrome и Firefox.
Просто хочу дать мне понять, в чем была причина этого вопроса для меня.
У нас есть приложение Angular2, которое вызывает наш NodeJS REST api. Остальной API затем вызывает другую услугу (SOAP, я считаю).
Мы выяснили, что наша служба SOAP не имела конечной точки (?) Только в одной среде (работала везде). Когда NodeJS api вызывал службу SOAP, мыльная служба возвращала сообщение об ошибке «X не является функцией». Когда ответ об ошибке был возвращен NodeJS, у него не было правильной обработки ошибок / исключений, поэтому он полностью убил службу. Таким образом, пользовательский интерфейс не получил ответа.