IE9 прерывает, затем повторно запрашивает скрипт - PullRequest
1 голос
/ 15 марта 2011

Просто скачал IE9 и поднял свой веб-проект с IHttpHandler, который записывает JavaScript на веб-страницу. Прежде чем написать сценарий, я проверяю, поступил ли запрос от нового сеанса, определив, истек ли срок действия файла cookie сеанса. Итак, вот странная часть: при запуске отладчика IE я вижу два запроса к этому сценарию: первый прерывается, а затем повторяется.

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

Затем браузер отправляет второй запрос со старыми просроченными файлами cookie, поэтому определяется, что это новый сеанс, и создается второй сеанс. Этот второй запрос обрабатывается браузером без ошибок.

Это не происходит в FF4, Chrome 10, Safari 5 или даже IE9 в режиме совместимости. Но получите это, он не делает это в стандартном IE9, если веб-приложение размещено на VS2010. Если я запускаю его в IIS, мои сессии удваиваются.

Существует ли настройка IIS, которая может быть причиной этого? Или это IE9, что мне нужно выяснить?

Я использую Win7 Ultimate N x64 в качестве своей машины для разработки.

обновление: еще одна странность: если я обновлю страницу ссылкой на IHttpHandler, первоначальный прерывание не произойдет.

обновление 2: Это сообщение публикуется в отладчике IE9 по второму запросу:

This download occurred following a preparser restart (often due to either document mode switching or mismatched content encoding between a meta tag in the document and the BOM or a server header).

Ответы [ 2 ]

4 голосов
/ 15 марта 2011

IE8 и 9 имеют предварительный анализатор, который работает в потоке HTTP-ответов и довольно наивно ищет URL-адреса для извлечения. Затем он получает их оптимистично, если у него есть время и открытые сеансы HTTP, с мыслью, что они будут под рукой, если он позже узнает, что они им нужны.

Этот процесс может быть прерван по ряду причин, некоторые из которых отмечены в сообщении отладчика, которое вы видите: возможно, режим документа переключен или используемая кодировка контента не является кодировкой контента, которую вы считаете нужной с помощью. Страница запускается в стандартном режиме, затем переключается в режим совместимости? (это может быть в случае, если это сайт интрасети.) Есть ли какой-то другой переключатель, который происходит?

Консоль JavaScript может содержать больше информации, например, HTML1113: Document mode restart from IE9 Standards to Quirks. В этом случае решение состоит в том, чтобы выбрать соответствующий DOCTYPE с самого начала, чтобы MSIE не переключал режим рендеринга.

0 голосов
/ 15 марта 2011

Хорошо, моей тестовой страницей была обычная HTML-страница без указания типа документа.Как только я вставил

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

, он снова стал работать нормально.

...