SCRIPT7002: XMLHttpRequest: Помилка мережі 0x2ef3, Не вдалося завершити операцію через помилку 00002ef3


77

Я постійно отримую цю помилку, коли роблю кілька викликів Ajax ...

Це може бути щось пов’язане з геокодування, але я справді не уявляю, як зафіксувати помилку, щоб відобразити щось корисне для користувачів ... або навіть як вирішити проблему, оскільки, здається, це просто посилання на якийсь вказівник чи щось інше: S 0x2ef3

SCRIPT7002: XMLHttpRequest: Помилка мережі 0x2ef3, Не вдалося виконати операцію через помилку 00002ef3.

Зображення може бути кориснішим за повідомлення про помилку:

введіть тут опис зображення

Будь-які ідеї взагалі?

Мій код запускає 10 дзвінків ajax за 1 секунду, які будуть оброблені стороною сервера геокодування.

Помилка виникає з перервами. Іноді я отримую геокодовані результати, а інколи - таку помилку. Я б сказав, що отримую це 10% часу. Це повністю зупиняє виклик ajax від запуску мого обробника помилок у jQuery.


2
зробіть console.dir (запит), щоб побачити вміст об’єкта XMLHttpRequest, перевірити стан і значення готовності, а також відповідь та відповідь
Текст

1
Тут та сама проблема. Використання https у IISExpress із самопідписаним сертифікатом. Дивна річ у тому, що проблема зникає, коли я знімаю прапорець TLS (усі версії) у Розширених налаштуваннях в Internet Explorer і перевіряю принаймні одну версію SSL.
Фроде

Вимкніть протокол HTTP / 2 з параметрів IE. stackoverflow.com/questions/56079289/disable-http2-in-ie11
Vinay

Відповіді:


29

Це виправлення, яке спрацювало для мене. З вашими даними json надсилається недійсний мім або неправильний набір символів, що спричиняє помилку Додайте набір символів таким чином, щоб не заплутатися:

$.ajax({
  url:url,
  type:"POST",
  data:data,
  contentType:"application/json; charset=utf-8",
  dataType:"json",
  success: function(){
  ...
  }
});

Довідково:

Jquery - Як змусити $ .post () використовувати contentType = application / json?

Не вдалося виконати операцію через помилку c00ce56e


5
Тут ви змішуєте дві речі: Response.ContentType здається серверною річчю, яка гарантує, що сервер включає кодировку у тип вмісту для своєї відповіді. ContentType у виклику $ .ajax повідомляє браузеру, який тип вмісту використовувати під час подання запиту на сервер. Тож одне не є альтернативою для іншого.
Wichert Akkerman

1
Зверніть увагу, що ця помилка (c00ce56e) відрізняється від OP (00002ef3). Я вважаю, що 00002ef3 - це помилка сертифіката, згадана у stackoverflow.com/a/32106649/1446634
Ewout

Я бачу, що ідентифікатор помилки змінюється при одній і тій же спробі підключення під час моєї поточної боротьби з цим, тому я б не припускав, що це щось більше, ніж якийсь зсув.
kungphu

1
"... спричинення цієї" помилки ""
Ендрю Копер

22

Ми також стикалися з подібними проблемами. Однак встановлення коди, як зазначалося в попередньому коментарі, не допомогло. Наша програма робила запит AJAX кожні 60 секунд, а наш веб-сервер nginx надсилав тайм-аут Keep-Alive на 60 секунд.

Ми усунули проблему, встановивши значення часу очікування до 75 секунд.

Ми вважаємо, що це відбувалося:

  1. IE робить запит AJAX кожні 60 секунд, встановлюючи Keep-Alive у запиті.
  2. У той же час nginx знає, що значення часу очікування Keep-Alive ігнорується IE, тому він запускає процес закриття підключення TCP (у випадку FF / Chrome це запускає клієнт)
  3. IE отримує запит на тісне з'єднання для раніше надісланого запиту. Оскільки IE цього не очікує, він видає помилку та перериває роботу.
  4. Здається, nginx все ще відповідає на запит, навіть якщо з'єднання закрито.

Дамп Wireshark TCP забезпечить більшу ясність, проблема вирішена, і ми не хочемо витрачати на це більше часу.


Встановлення часу очікування до 60 також вирішило цю проблему для мене на двох веб-сайтах, якими я керую. Радий, що для цього було швидке виправлення для IE.
Джош

10

Я отримав ту саму помилку ( SCRIPT7002: XMLHttpRequest: Network Error 0x80004004, Operation aborted), у нашому випадку це було через ту саму політику щодо походження JavaScript.

Наш веб-додаток здійснював виклик JQuery AJAX на наш сервер через порт 8080. Виклик перехоплювався та перенаправлявся через SSL (через правила сервера, які вимагають, щоб вхідний трафік використовував SSL).

Щойно ми завантажили веб-програму через порт SSL, проблему було вирішено.


Як ви домоглися завантаження веб-програми через порт SSL?
Ciaran Gallagher

2

У мене виникла ця проблема, запит AJAX Post, який повернув деяку кількість JSON, не вдався, з часом повернувши аборт, із:

SCRIPT7002: XMLHttpRequest: Помилка мережі 0x2ef3

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

Виявив мою проблему - розслідування виявило, що у відповіді відсутній код стану. У цьому випадку мала бути 500 внутрішня помилка. Це створювалось як частина веб-програми C # із використанням стеку сервісів, який вимагає явного встановлення коду помилки.

IE, здавалося, залишав з'єднання відкритим для сервера, врешті-решт час очікування закінчився, і він "перервав" запит; незважаючи на отримання вмісту та інших заголовків.

Можливо, виникає проблема з тим, як IE обробляє заголовки у публікаціях.

Оновлення веб-програми для коректного повернення коду стану вирішило проблему.

Сподіваюся, це комусь допомагає!


Ви можете розмістити повну помилку для довідки? Network Error 0x2ef3є загальною помилкою, за якою, ймовірно, слід більш конкретний код помилки.
Ewout

2

Ця проблема сталася в моєму проекті через виклик ajax GET із довгим рядком xml як значенням параметра. Вирішено за допомогою наступного підходу: Виконання його як ajax-післявиклику методу класу контролера Java Spring MVC, як цей.

$.ajax({
    url: "controller_Method_Name.html?variable_name="+variable_value,
    type: "POST",
    data:{ 
            "xmlMetaData": xmlMetaData // This variable contains a long xml string
    },
    success: function(response)
    {
        console.log(response);
    }
  });

Метод класу внутрішнього пружинного контролера MVC:

@RequestMapping(value="/controller_Method_Name")
  public void controller_Method_Name(@RequestParam("xmlMetaData") String metaDataXML, HttpServletRequest request)
{
   System.out.println(metaDataXML);
}

1

Я мав цю помилку деякий час і знайшов виправлення. Це виправлення стосується програми Asp.net, дивно, воно не вдалося лише в режимі несумісності IE, але працює у Firefox та Crome. Надання доступу до папки веб-сервісу для всіх / конкретних користувачів вирішило проблему.

Додайте наступний код у файл web.config:

 <location path="YourWebserviceFolder">
  <system.web>
   <authorization>
    <allow users="*"/>
   </authorization>
  </system.web>
 </location>

1

Я натрапив на ці питання та відповіді після отримання вищезазначеної помилки IE11при спробі завантаження файлів за допомогою XMLHttpRequest:

var reqObj = new XMLHttpRequest();

//event Handler
reqObj.upload.addEventListener("progress", uploadProgress, false);
reqObj.addEventListener("load", uploadComplete, false);
reqObj.addEventListener("error", uploadFailed, false);
reqObj.addEventListener("abort", uploadCanceled, false);

//open the object and set method of call (post), url to call, isAsynchronous(true)
reqObj.open("POST", $rootUrlService.rootUrl + "Controller/UploadFiles", true);

//set Content-Type at request header.for file upload it's value must be multipart/form-data
reqObj.setRequestHeader("Content-Type", "multipart/form-data");

//Set header properties : file name and project milestone id
reqObj.setRequestHeader('X-File-Name', name);

// send the file
// this is the line where the error occurs
reqObj.send(fileToUpload);

Видалення лінії reqObj.setRequestHeader("Content-Type", "multipart/form-data");вирішило проблему.

Примітка: ця помилка в інших браузерах відображається по-різному. Тобто Chrome показує щось подібне до скидання з'єднання, подібне до того, про що повідомляє Fiddler (порожня відповідь через раптове переривання з'єднання).

Крім того, ця помилка з'явилася лише тоді, коли завантаження було зроблено з машини, яка відрізняється від WebServer(без проблем на localhost).


1

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

Виклики ajax, які спричинили проблему, намагалися передати порожній об'єкт даних. Здається, IE це не подобається, але інші браузери не проти.

Щоб це виправити, я просто видалив data: {},дзвінок ajax.


для мене, видалення body: {}виправлено.
smurf


0

Підвищення директиви у virtualhost для KeepAliveTimeout до 60 вирішило це для мене.


0

Зіткнувся з тією ж проблемою у своєму проекті asp.net, врешті-решт, я виявив, що проблема полягає в тому, що цільова функція не статична, проблема виправлена ​​після того, як я поставив ключове слово static.

[WebMethod]
public static List<string> getRawData()

2
Це дуже специфічно для вимог вашої програми. використання "static" не буде спеціально пов'язане з цим повідомленням. Можливо, спробуйте детальніше дослідити, в чому полягала справжня проблема. Це було б чудово!
Jimmyt1988,

0

Якщо жодне з цих рішень не було достатньо "чітким", по суті, IE / Edge не вдається правильно проаналізувати поле "даних" вашого виклику AJAX. Більш ймовірно, що ви надсилаєте "закодований" об'єкт JSON.

Що не вдалося: "data": "{\"Key\":\"Value\"}",

Що працює: "data":'{"Key":"Value"}'


0

[ВИРІШЕНО]

Цю помилку я спостерігав лише сьогодні, проте для мене код помилки був іншим.

SCRIPT7002: XMLHttpRequest: Помилка мережі 0x2efd, Не вдалося виконати операцію через помилку 00002efd.

Це відбувалося випадково і не весь час. але те, що він помітив, це якщо це стосується наступних викликів ajax. тому я поклав деяку затримку в 5 секунд між викликами ajax, і це вирішено.


2
Важко уявити сценарій, коли затримка викликів ajax на " 5 секунд " була б розумним рішенням для цього.
ChiefTwoPencils

@ChiefTwoPencils, точно така ж моя позиція ..! але це те, що вирішило мою проблему, перекопавши стільки офіційних сторінок довідки IE. Я не знайшов жодної корисної підказки. в основному, це помилка IE, але не логічне рішення. якщо знайдете, будь ласка, оновіть мене теж.
Аміт Шах
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.