Вам нужно указать, какой «веб-сервер» Python вы используете (например, бутылка? Может быть, Tornado? CherryPy?), но, что более важно, вам нужно указать, какие заголовки запросов и какой HTTP-ответ входит и выходит, когда задействован IE9.
Вы можете снять их с проволоки, используя, например, ngrep, или, я думаю, вы можете использовать Инструменты разработчика в IE9 (клавиша F12).
Наиболее распространенные причуды IE9, которые часто не беспокоят веб-браузеры, — это несоответствия в Content-Length (ну, это ДЕЙСТВИТЕЛЬНО беспокоило Safari в прошлый раз, когда я смотрел), возможно, Content-Type (это действует в обратном порядке — IE9 иногда правильно подбирает MIME-тип HTML, даже если Content-Type неверен), Connection: Close.
Так что да, это может быть проблема с конвейерной обработкой HTTP: в частности, если вы передаете запрос с недопустимой длиной содержимого и даже без кодирования фрагментированной передачи, IE может дождаться «завершения» запроса. Это произойдет и в веб-браузерах; но тогда может случиться так, что это поведение в IE переопределяет сброс и закрытие соединения, а в веб-браузерах - нет. Эти две гипотезы могут соответствовать вашим наблюдаемым симптомам.
Чтобы исправить это, вы либо переключаетесь на кодирование передачи по частям, которое в некотором роде заменяет Content-Length, либо правильно вычисляете его значение. Как это сделать зависит от сервера.
Чтобы быстро проверить, вы можете ввести Content-Length, безусловно, слишком короткий (например, 100 байт?), чтобы увидеть, приведет ли это к зависанию IE и отображению частичной веб-страницы.
person
LSerni
schedule
23.08.2012