header("Content-type:text/css"); 正在使用Firefox和Chrome,但在Internet Explorer 9中它显示为"text/html"

Kev*_*erw 31 php content-type http-headers internet-explorer-9

header("Content-type: text/css"); 适用于Firefox,Chrome等,但不适用于Internet Explorer 9.我不确定是什么.

在Chrome和Firework中,如果我在自己的标签中打开它并将其应用于页面,则会显示样式表.

在开发人员工具的网络下的Chrome中,它说类型是text/css,状态是200.

在Internet Explorer 9中,如果我在自己的选项卡中打开它并且它没有应用于页面,则它想要下载样式表.

在F12开发人员工具中,您可以单击网络,开始捕获并刷新页面.它显示了Style.css.php.类型是text/html,结果是406.

这是在头脑中:

<link rel="stylesheet" type="text/css" href="/assets/css/style.css.php" media="screen" />
Run Code Online (Sandbox Code Playgroud)

请求标头:

Key Value
Request GET /assets/css/main.css HTTP/1.1
Accept  text/css
Referer http://10.0.1.5/
Accept-Language en-US
User-Agent  Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept-Encoding gzip, deflate
Host    10.0.1.5
Connection  Keep-Alive
Cookie  PHPSESSID=*Hidden*
Run Code Online (Sandbox Code Playgroud)

响应标头:

Key Value
Response    HTTP/1.1 406 Not Acceptable
Date    Fri, 01 Apr 2011 10:12:42 GMT
Server  Apache/2.2.14 (Ubuntu)
Alternates  {"main.css.php" 1 {type application/x-httpd-php}}
Vary    negotiate
TCN list
Keep-Alive  timeout=15, max=100
Connection  Keep-Alive
Content-Type    text/html; charset=iso-8859-1
Run Code Online (Sandbox Code Playgroud)

Kor*_*nel 41

IE有" 不,我不是在开玩笑式内容类型 "开关:

X-Content-Type-Options: nosniff
Run Code Online (Sandbox Code Playgroud)

顺便说一句:确保你也在PHP中发送Last-Modified和禁用session.cache_limiter,否则浏览器将继续重新加载CSS文件,这将对性能产生负面影响.

  • 这是答案吗?这个帖子上的任何内容似乎都没有表明"答案" (6认同)
  • `header("Content-Type:text/css"); header("X-Content-Type-Options:nosniff");`或`header("Content-Type:text/css; X-Content-Type-Options:nosniff;");`不起作用.我应用它吗? (2认同)

Nat*_*ong 16

Internet Explorer具有通过浏览器报告的MIME类型信任文件扩展名的历史记录.如果您有mod_rewrite可用,请让您的HTML查找.css文件,然后创建一个mod_rewrite规则,将该URL传递给您的脚本.

  • +1; 但是,不仅IE倾向于盲目地信任MIME类型的文件扩展名(应该完全没有意义!).他们都在[不同的背景下]这样做(http://stackoverflow.com/questions/4741438/what-c​​ontent-types-execute-javascript-in-the-browser) (2认同)

sam*_*ull 11

我发现使用header("Content-type: text/css", true);适合我的作品.它可以防止服务器为"Content-Type"输出2个HTTP标头.

  • `header()`的第二个参数默认为`true`. (14认同)

Cap*_*ule 5

header发送之前有输出吗?php文件中的BOM?回车?

如果禁用错误报告,您可能看不到它应触发的错误。

尝试在顶部添加ob_start(),它将解决与在任何header()调用之前已发送的标头相关的任何问题。

如果 UTF8 文件中有 BOM,您可能需要将其删除。