Обратный вызов Ajax не вызывается, пока в IE7 не откроется новая вкладка - PullRequest
1 голос
/ 04 октября 2011

У нас действительно странные проблемы с IE7, и только с IE7. При попытке воспроизвести проблему это происходит только с собственным IE7, а не при запуске режима IE7 в IE8 / 9, поэтому, пожалуйста, помните об этом, если вы пытаетесь повторить эту проблему.

Проблема заключается в следующем:

Мы запрашиваем ответ от сервера с помощью AJAX. Пользователь публикует что-то, с чем серверу, возможно, придется поработать некоторое время, поэтому каждые 5 секунд или около того отправляется запрос, проверяющий, выполнен ли сервер. Это прекрасно работает в любом браузере, кроме родного IE7. Проблема в том, что он никогда не прекращает «загрузку». При проверке запросов с помощью Fiddler2 мы видим, что он выполняет два запроса, а затем ничего больше. Он перестает делать что-либо, когда все еще находится в режиме ожидания. В браузере sain он продолжает опрос, а затем останавливается, когда получает «ПОДТВЕРЖДЕНО». Действительно странная вещь заключается в том, что он выполняет свой последний запрос и возвращает как обычно, только и только тогда, когда вы открываете новую вкладку .

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

Вот заголовки, отправленные обратно сервером:

Это заголовки для ответа на производственном компьютере. Это был последний полученный ответ. Он загружается бесконечно, пока вы не откроете новую вкладку (просто пустую новую вкладку!), Затем будет сделан окончательный запрос, и все получится.

HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 0
Cache-Control: max-age=0, private, must-revalidate
Content-Type: application/json; charset=utf-8
Date: Tue, 04 Oct 2011 07:37:45 GMT
ETag: "867dafc628c43b6ca8a73d1977669250"
P3P: CP="ALL DSP COR CURa ADMa DEVa OUR IND COM NAV"
Server: nginx/1.0.6
Set-Cookie: _web_session=COOKIE; path=/; expires=Tue, 04-Oct-2011 10:37:45 GMT; HttpOnly
Vary: Accept-Encoding
Via: 1.1 varnish
X-Cache: MISS
X-Runtime: 0.062794
X-UA-Compatible: IE=Edge,chrome=1
X-Varnish: 55900984
Content-Length: 145
Connection: keep-alive

{"direct_publishing_settings_id":9970,"confirmed":"PENDING","errors":{},"username":"************","url":"","blog_id":44606,"platform":"blogg_se"}

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

HTTP/1.1 200 OK
X-Ua-Compatible: IE=Edge
Etag: "253c934246a69c9ca821464f80f400b3"
P3p: CP="ALL DSP COR CURa ADMa DEVa OUR IND COM NAV"
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
Date: Tue, 04 Oct 2011 07:34:22 GMT
Server: WEBrick/1.3.1 (Ruby/1.8.7/2010-01-10)
X-Runtime: 0.459232
Content-Length: 137
Cache-Control: max-age=0, private, must-revalidate
Set-Cookie: _web_session=COOKIE; path=/; expires=Tue, 04-Oct-2011 10:34:22 GMT; HttpOnly

{"direct_publishing_settings_id":10,"confirmed":"PENDING","url":"","blog_id":29,"errors":{},"username":"fsasaffas","platform":"blogg_se"}

Если вы хотите попробовать это, вы можете перейти на videofy.me , получить новую учетную запись (это действительно легко), при входе в систему перейдите на videofy.me / blogger / settings / direct_publishing . Выберите платформу блога в первом выпадающем меню, нажмите «активировать» и напишите что-нибудь в появившиеся поля имени пользователя / пароля, затем нажмите зеленую кнопку и ждите вечно. Через 45 секунд или случайное количество времени откройте новую вкладку и увидите, что запрос волшебным образом завершен.

Я предполагаю, что это должно что-то делать с IE7, кэширующим запрос, и затем что-то освобождается, если открыта новая вкладка. Но это всего лишь предположение, и поиск в Google ничего не возвращает. Я пишу здесь, потому что это настолько неясно, что я надеюсь, что кто-то здесь знает что-нибудь об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...