IE7仅在来自生产服务器的页面上忽略CSS属性选择器

Eli*_*ria 20 html css internet-explorer css-selectors internet-explorer-7

在我的网站上,IE7似乎忽略了某些CSS属性选择器.奇怪的是,只有当页面来自生产服务器时才会发生.如果我的个人服务器上有完全相同的代码,或保存在我的硬盘上,它可以正常工作.以下是导致问题的示例:

<!DOCTYPE HTML>
<html><head>
<title>IE display test</title>
<style type="text/css">
[type=button] {
  display: block;
}
</style>
</head>
<body>
<input type="button" value="Button 1"/>
<input type="button" value="Button 2"/>
<input type="button" value="Button 3"/>
</body></html>
Run Code Online (Sandbox Code Playgroud)

由于按钮上的显示设置为"阻止",因此它们应垂直排列.但只有当我的生产服务器提供页面时,它们才会水平排列.当我使用开发人员工具栏检查样式时,我没有像往常一样看到"显示"属性.我唯一能想到的可能是这会导致页面的URL或来自服务器的响应头.我可以通过实验来弄清楚,但这样做会很不方便和耗时,所以在我这样做之前,我想问:为什么会发生这种情况以及可以做些什么呢?

编辑:我想出了一个小提琴.它在该网站上看起来很好.

编辑2:以下是来自生产服务器的响应标头:

HTTP/1.1 200 OK
服务器:Apache-Coyote/1.1
内容类型:text/html; charset = utf-8
内容 - 语言:en-US
内容长度:291
日期:星期三,2012年1月18日21:32:48 GMT

编辑3:以下是我个人服务器的响应标题:

HTTP/1.1 200 OK
日期:星期三,2012年1月18日21:37:30 GMT
服务器:Apache
变化:接受编码
内容编码:gzip
内容长度:176
保持活动:超时= 2,最大= 100
连接:保持-Alive
Content-Type:text/html; charset = utf-8

生产服务器不应用gzip压缩,因为它只对大于特定大小的文件执行此操作.如果我添加一些东西来使文件足够大,它使用gzip,我仍然在IE7中看到问题,所以这似乎与gzip没有任何关系.

我尝试配置我的个人服务器以发送"内容 - 语言"标题,如生产服务器,并没有触发问题.

我不知道是否有任何其他标题与此有关.我可以尝试测试它们,但它会有点棘手,所以可能需要一些时间.

编辑4:我在IE8中没有注意到这个问题,即使我打开了兼容模式.我在Windows XP上测试它,以防万一.

编辑5:我把charset放在我个人服务器的Content-Type标题中.它没有触发问题.

编辑6:以下是一些截图:来自生产服务器: 在生产服务器上进行IE7测试

来自我的个人服务器: 个人服务器上的IE7测试

直接从我的硬盘驱动器加载: IE7直接从我的硬盘测试

编辑7:我终于得到了导致这个问题的线索!我试着进入javascript:alert(document.compatMode)地址栏.个人和直接页面显示,CSS1Compat但生产页面显示BackCompat.看起来浏览器只有在从生产服务器渲染页面时才处于怪异模式.到目前为止,我不知道为什么会发生这种情况或者该怎么做.

编辑8:我遗漏了一个细节:截图实际上来自我的开发环境,它模拟生产服务器,但在我自己的计算机上运行.这将使BoltClock的回复看似合理,除了在我们的实际生产服务器上出现相同的问题,该服务器在匹配173的IP地址上..*.为什么我在该服务器上看到问题?这也是私有IP地址吗?知道实际的生产服务器使用https可能会有所帮助.

编辑9:由于赏金过期,问题停止出现在生产服务器上,但它仍然出现在我的开发环境中(10.1.10.34).我不知道为什么.我想我会把它归咎于宇宙射线,除非我能拿出更多的证据.

Bol*_*ock 8

正如评论中所讨论的,根据thirtydot的这个答案scunliffe的这个答案,它似乎很可能是Internet Explorer中安全功能的影响.您的生产服务器位于您的Intranet中,并且正在通过私有的A类IPv4地址(10.*.*.*)进行访问,我怀疑它基本上会导致IE7以怪异模式呈现页面(而IE8和更新版本则在兼容性视图中呈现页面).

所有这些只是猜测,但我担心 - 我无法在任何系统上的任何IE浏览器中重现您的问题,至少不能在您的个人服务器上或使用我自己的文件.如果您的生产服务器对公共访问开放,不仅仅是技术上的,也许您可​​以提供它的链接,以便我们可以进一步调试,因为问题显然只局限于您的生产服务器.