尝试在 IE9 中调试网站。我通过 Python 运行它。
在 chrome、safari、firefox 和 opera 中,站点会立即加载,但在 IE9 中,它似乎挂起并且从未真正加载。
这可能是http管道的问题吗?或者是其他东西?我该如何解决这个问题?
尝试在 IE9 中调试网站。我通过 Python 运行它。
在 chrome、safari、firefox 和 opera 中,站点会立即加载,但在 IE9 中,它似乎挂起并且从未真正加载。
这可能是http管道的问题吗?或者是其他东西?我该如何解决这个问题?
您需要指定您正在使用的 Python “Web 服务器”(例如,bottle?也许是 Tornado?CherryPy?),但更重要的是,当涉及 IE9 时,您需要提供哪些请求标头以及哪些 HTTP 响应进出。
您可以使用例如 ngrep 将它们从电线上取下,或者我认为您可以使用 IE9 中的开发人员工具(F12 键)。
IE9 最常见且通常不会打扰 Web 浏览器的怪癖是 Content-Length 不匹配(好吧,我上次查看时,这个 DID 困扰了 Safari),可能是 Content-Type(这反过来 - IE9 有时会正确收集 HTML mimetype,即使Content-Type 错误),连接:关闭。
所以是的,这可能是 HTTP 流水线的问题:特别是如果您使用无效的 Content-Length 甚至没有分块传输编码的请求,IE 可能会等待请求“完成”。这也会发生在 Web 浏览器中;但在 IE 中,这种行为可能会覆盖正在刷新和关闭的连接,而在 Web 浏览器中则不会。这两个假设可能与您观察到的症状相符。
要解决这个问题,您要么切换到分块传输编码,它以某种方式替换 Content-Length,要么正确计算其值。如何执行此操作取决于服务器。
为了快速验证,您可以发出一个内容长度肯定太短(例如 100 字节?)来查看这是否会导致 IE 取消挂起并显示部分网页。
使用数据包嗅探器拦截和记录服务器与 IE 之间以及服务器与另一个浏览器之间的数据包。检查它们并比较它们,看看会发生什么。