显示 html 页面时出现 IE11 问题



我正在将Internet Explorer版本从IE8升级到IE 11。但是在IE11上测试我们的代码时,我们面临着一个问题。

其中一个HTTP请求基本上将HTML页面从服务器返回到客户端。此请求在IE8中工作正常并正确显示网页,但是当我们从IE11启动该请求时,它会在浏览器中显示网页的HTML源代码。

我尝试使用扩展名手动保存这些源代码(显示在浏览器中.html并在本地启动。在本地启动时,它会正确显示。 这意味着从服务器返回的HTML页面是正确的,并且渲染有问题?

这是IE8和IE11中不同的HTTP标头请求和响应,通过Fiddler抓取 ->

IE 8:

请求标头:

接受: application/x-ms-application, image/jpeg, application/

xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, /

用户代理:Mozilla/4.0(兼容;微星 7.0;视窗NT 6.1;哇64;三叉戟/4.0;SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729;媒体中心PC 6.0;信息路径.3; .NET4.0C; .NET4.0E)

响应标头:

内容类型:文本/纯文本;字符集=ISO-8859-1

IE 11:

请求标头:

接受: text/html, application/xhtml+xml, /

用户代理:Mozilla/5.0(视窗NT 6.1;三叉戟/7.0;rv:11.0) 像壁虎

响应标头:内容类型:文本/纯文本;字符集=ISO-8859-1

我对这一切很陌生,不知道下一步该采取什么步骤。发生这种情况是由于浏览器无法接收正确格式的页面吗?更改服务器端代码有点困难,因为服务器是动态创建页面的。有没有简单的解决方案?

提前谢谢。

响应标头的内容类型显示"文本/纯文本",这解释了为什么显示源而不是呈现源。

我相信没有其他方法,只能在发送动态生成的页面时更改您的服务器端代码并将响应的内容类型设置为"text/html"

有了Content-Type: text/plain,你实际上是在告诉浏览器自己"请将其视为纯文本并显示" - 它只是遵循命令。

明显的解决方法是强制内容类型text/html,这应该是服务器端代码中的微小更改。如果 Web 服务器是 Apache,则可以使用 mod_headers 和 .htaccess 文件或某些虚拟主机配置来强制执行此操作。如果 Web 服务器不是 Apache,您可以使用另一个带有 mod_proxy 的小型 Apache 服务器来添加这些标头。

我非常惊讶这在IE8中"正确",可能您也在那里触发了怪癖(兼容性)模式。如果直接修复内容类型不可行,您可以尝试通过将以下行添加到输出的<head>部分来强制 IE11 在 IE8 模式下运行:

<meta http-equiv="X-UA-Compatible" content="IE=8" />

然而,这是一个丑陋的解决方法,它将在Firefox,Chrome,Safari和其他符合标准的浏览器中保持破坏,就像IE11一样,它们只会遵循您的命令并将内容显示为纯文本。最后,他们只是按照你告诉他们的去做。

最新更新