IE9 "CSS 因 Mime 类型不匹配而被忽略“问题
写页面的时候在chrome,fireforks等页面上显示正常,但是换成IE9之后就完全没有样式了。IE真是个奇葩的怪胎。它的报错信息是’CSS 因 Mime 类型不匹配而被忽略‘,也就是说所有的.css文件全部都不起效果了。去网上查了一些资料,有很多与这个问题相关的回答。
首先要明白Mine类型是个什么。MIME类型就是设定某种指定扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开,多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。与之相关主要的是web.xml文件。web.xml 是网络程序中的一个很重要的配置文件。当启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>这两个结点。
而在IE9的新安全机制中,要求web服务器返回的http 头信息中content-type必需写明css文件的MIME-type为'text/css',否则IE9不会将它作为css文件来处理。如果想要ie9也能正确的显示css文件定义的样式,需要修改服务器端返回给客户端的css文件的http header头信息中对应的mime类型。
如何修改返回的css MIME信息:
修正css 文件的返回mime信息有不同方法,一是修改服务器配置或者服务器程序,对于css文件输出正确的mine头信息。这个要对iis设置进行操作,对于自己的服务器来说可行,但对于使用虚拟主机的站长来说就不是和容易做到了,这里就不细说了。
另一种另类方法是,通过配置web.xml文件,要求服务器输出正确的css mine信息。
在web.xml加入内容:
- <mime-mapping>
- <extension>css</extension>
- <mime-type>text/css</mime-type>
- </mime-mapping>