标头(“内容类型:文本/ css”);在Firefox和Chrome中运行,但在Internet Explorer 9中显示为“ text / html”

2021/01/30 21:21 · php ·  · 0评论

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" />

请求标头:

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*

响应头:

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

IE有“不,我不是在开玩笑Content-Type ”开关:

X-Content-Type-Options: nosniff

顺便说一句:请确保您还发送Last-Modified和禁用session.cache_limiterPHP,否则浏览器将继续重新加载CSS文件,这会对性能产生负面影响。

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

我发现使用header("Content-type: text/css", true);对我有用的作品。它阻止服务器为“ Content-Type”输出2个HTTP标头。

发送标头之前是否有任何输出?PHP文件中的BOM?回车?

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

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

如果您的UTF8文件中有BOM,则可能要删除它。

我认为问题可能是由于mod_security服务于401错误页面(HTML)而不是CSS。尝试将其添加到.htaccess网站的网络根目录中文件中,以查看是否可以解决问题。

<IfModule mod_security.c>
    SecFilterEngine Off
    SecFilterScanPOST Off
</IfModule>

不使用httpd.conf使用.htaccess来处理图像/ CSS / JS作为PHP的文章帮助我弄清了这个问题。

您基本上完成了与其他所有人所提到的相同的工作(在PHP中设置标头,等等),而且还用于.htaccess设置AddHandler参数。

<Files my_style.css>
    ForceType application/x-httpd-php
    AddHandler application/x-httpd-php .css
</Files>

这样,您可以使用.css命名它,而PHP仍可以对其进行解析。

对于在动态生成的CSS文件的响应标头中提供HTTP 406状态代码的Internet Explorer 9,我们:

  1. 删除了Apache mod_negiotiation模块,或在主机配置(或.htaccess)中添加了-Multiviews
  2. 激活的Apache mod_rewrite
  3. 向虚拟主机配置或htaccess添加了重写规则:

    <IfModule mod_rewrite.c
    
      RewriteEngine on
      RewriteBase /
    
      #serve CSS and JS from combine.php
      RewriteRule ^combine(.*) combine.php [NC,L]
    
    </IfModule>
    

注意:此解决方案仅对不使用Multiviews的服务器/虚拟主机有效,因为删除mod_negotiation也会删除此指令的使用。

最近,我自己也遇到了这样的问题。我只能告诉您令人讨厌的调试。不知道这是否对您有帮助,但我希望会有所帮助。切入正题。

Internet Explorer使用一种称为Mime类型的嗅探的方法,该方法仅读取200字节的FILE标头。

我有一个PHP脚本,该脚本必须根据提供的参数返回不同的视频文件(包括数据-整个文件)。

我的视频请求示例:get-video.php?id = here_goes_the_id

$file = ''; // Get the video file path
if (is_file($file)) {
    header("Content-Type: video/mp4");
    header("Content-Length: " . filesize($file));
    readfile($file);
}
exit(); // This is the turnaround

发送脚本文件数据后,您必须立即挂起脚本。这样可以防止IE Mime类型的嗅探。

希望能帮助到你。

本文地址:http://php.askforanswer.com/biaotouneirongleixingwenben-csszaifirefoxhechromezhongyunxingdanzaiinternet-explore.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!