有没有办法在扩展名不是.css的样式表中进行链接?

1.2*_*tts 6 html css stylesheet

我需要在CSS中动态链接(如果你知道 - 还没有测试过JS),但是当我这样做时,浏览器没有渲染样式?

这是我的代码:

<link rel="stylesheet" href="css/test"/>
Run Code Online (Sandbox Code Playgroud)

如果我手动上传并将文件保存为test.css,则可以正常工作.

<link rel="stylesheet" href="css/test.css"/>
Run Code Online (Sandbox Code Playgroud)

有没有办法对浏览器说:"这是一个CSS文件.请忽略它没有css扩展名"?

更多
原因是我正在设置一个允许用户动态创建自己的CSS的服务器.我将此信息存储在数据库中,并且不希望每次用户更新css或新用户创建其帐户时都创建物理(数字)文件.因此,URL可能是,href ="http://somedomain.com/home.php?user=453&css=true"或类似的东西,如果放在浏览器的URL中,将返回原始CSS.

wka*_*ann 9

浏览器首先查看它们收到的内容的MIME类型,这原则上与文件的扩展名无关.MIME类型由Web服务器作为HTTP标头的一部分发送(如果您愿意,则为文件的信封.)

CSS样式表的正确MIME类型是text/css.如果样式表文件具有text/css MIME类型(在HTTP标头中定义),则无论扩展名是什么,您的浏览器都将使用它们来应用样式.

如果MIME类型错误,则结果是未定义的:它取决于浏览器以及HTML版本和严格性(如果样式是否呈现).您可以使用浏览器的调试器来检查MIME类型.

有关Chrome中的示例,请参阅此屏幕截图.

这个截图

每个段落color: red在相应的文件中都有规则,但不应用一个.如您所见,text/plain文件中的样式确实已呈现,但其MIME类型不正确.浏览器会发出警告.PHP生成的text/html文件中的样式不会呈现(并给出警告.)

PHP和其他脚本引擎允许操作MIME类型,正如我在test.css.fixed.php文件中所做的那样(下面的代码.)正如您所看到的,浏览器不再抱怨并应用样式而不管其扩展名如何.

在PHP中,MIME类型可以设置如下(这是test.css.fixed.php):

<?php 
    header("Content-Type: text/css");
?>

    p.test_css_fixed_php {
        color: red;
    }
Run Code Online (Sandbox Code Playgroud)

header函数更改服务器发送的HTTP标头.

如果您不使用脚本引擎,则可以配置Web服务器以正确设置MIME类型(请参阅例如Apache mod_mime配置).

请注意,HTML版本和严格性也会对此产生影响.在Chrome中,当HTML类型不严格时,text/html文件中的样式似乎无论如何都会呈现.但你不能指望它,所以它是一个快速和肮脏的解决方案充其量.

  • HTML5标准实际上要求用户代理优先考虑服务器通过MIME类型设置的MIME类型作为客户端上的链接类型属性.您可以阅读[此处](http://dev.w3.org/html5/spec-preview/the-link-element.html#attr-link-type),其中明确涵盖您的案例.客户端属性旨在防止用户代理下载它不支持的文件类型(例如,如果它不支持VB脚本执行,则不下载VB脚本.) (2认同)