IE 9-30-секундные запросы Ajax POST

#jquery #ajax #apache #internet-explorer-9

#jquery #ajax #apache #internet-explorer-9

Вопрос:

В IE 9 при отправке AJAX-запроса на мой сервер с использованием любого из следующих методов

 // SproutCore
SC.Request.postUrl(...).send()

// jQuery
$.post(...)
 

Я всегда вижу почти 30-секундную задержку перед возвратом функции, хотя в WireShark я ясно вижу, что запрос получен. Прошло некоторое время с тех пор, как я использовал Wireshark, так что, возможно, я просто неправильно читаю, но я вижу следующее, что заставляет меня думать, что это может быть проблемой Apache, возможно?

 Time         Info
-------------------------------------------------------------------
77.716243    [PSH, ACK] Seq=1 Ack=1031 Win=7808 Len=896
107.576027   [FIN, ACK] Seq=897 Ack=1032 Win=7808 Len=0
 

Обратите внимание на почти точную разницу в 30 секунд. Кроме того, я подтвердил, что первый запрос содержит правильные данные с сервера.

Это просто ошибка в IE 9? Или, возможно, неправильная конфигурация на моем сервере Apache?

Любые мысли будут с благодарностью!

Комментарии:

1. Вы пробовали это в других браузерах? В конце концов, IE9 — это IE, поэтому удивительно, если что-то работает хорошо. IE9 — небольшое улучшение, но оно падает с низкой базы.

2. Извините, да, он отлично работает в Chrome, Firefox, Safari и занимает несколько секунд в IE8, но обычно находится в диапазоне 2-6 секунд.

3. Что вы запрашиваете? Могут ли в нем быть какие-то ошибки html и т. Д.? У IE есть проблема с исправлением ошибок в запросе ajax: (

4. Я запрашиваю некоторый базовый JSON. Насколько я могу судить, это совершенно справедливо. И все работает отлично после 30-секундной задержки.

5. Для дальнейшего использования, скрипач (www.fiddertool.com ) — это гораздо лучший инструмент, чем wireshark, для отладки подобных вещей.

Ответ №1:

Хммм … похоже, это не проблема. По-видимому, перезагрузка моего компьютера устранила проблему, так что это не проблема на уровне кода. Извините, что сбрасываю это в SO-сферу. Надеюсь, тем не менее, кто-то еще увидит это и перезапустит, прежде чем отправлять вопрос 🙂

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

Обновление x2: ну, это не реальное решение, но я нашел обходной путь, используя следующий код:

 didSend: function(request, response) {
  if (SC.browser.msie amp;amp; request.get('type') === "POST") {
    setTimeout(function() {
      Core360.Request.getUrl('/test_server').send();
    }, 500);
  }
}
 

По какой-то причине это приводит к закрытию предыдущего соединения, и, по-видимому, запрос GET немедленно возвращается и не ожидает рассмотрения, поэтому он работает.

Я надеюсь, что это поможет какой-нибудь бедной душе в будущем.