我正在将Internet版本从IE8升级到IE11,但是在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/xaml xbap,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/m刀,/
用户-代理: Mozilla/4.0 (兼容;MSIE7.0;Windows 6.1;WOW64;三叉戟/4.0;SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR3.0.30729;Media Center PC 6.0;InfoPath.3;.NET4.0C;.NET4.0E)
响应头:
内容-类型:文本/纯文本;字符集=ISO-8859-1
IE 11:
请求头:
接受: text/html,application/xhtml+xml,/
用户-代理: Mozilla/5.0 (Windows 6.1;Trident/7.0;rv:11.0)类似于壁虎
响应头:内容-类型:文本/纯文本;字符集=ISO-8859-1
我对这一切并不熟悉,也不知道下一步该采取什么措施。是否由于浏览器无法以正确的格式接收页面而发生这种情况?更改服务器端代码有点困难,因为服务器动态地创建页面。有什么简单的解决办法吗?
提前谢谢。
发布于 2014-12-29 22:27:42
您的响应标头的内容-类型显示的是“文本/纯文本”,这解释了为什么源显示而不是呈现源。
我相信除了更改服务器端代码并在发送动态生成的页面时将响应的内容类型设置为"text/html“之外,没有其他方法。
发布于 2014-12-29 22:43:20
使用Content-Type: text/plain,您实际上是在自己告诉浏览器“请将其作为纯文本对待并显示出来”--它只是按照命令执行。
最明显的解决办法是强制内容类型为text/html,这应该是服务器端代码中的一个小改动。如果and服务器是Apache,则可以使用mod_headers和.htaccess文件或某些vhost配置来强制执行此操作。如果add服务器不是Apache,则可以使用另一个带有mod_proxy的小型Apache服务器来添加这些头。
我非常惊讶这在IE8中“正确”,可能你也触发了怪癖(兼容性)模式在那里。如果直接修复内容类型是不可行的,您可以尝试通过将以下行添加到输出的IE11部分来强迫IE8模式下运行:
<meta http-equiv="X-UA-Compatible" content="IE=8" />然而,这是一个丑陋的解决办法,而且在火狐、Chrome、Safari和其他标准中都会被打破--符合标准的浏览器,就像IE11一样--它们只会按照您的命令运行,并将内容显示为纯文本。最后他们只是照你说的做。
https://stackoverflow.com/questions/27696173
复制相似问题