AltoRouter 发送 Mime 类型

AltoRouter send Mime Type

我正在使用 AltoRouter 将我的网址路由到正确的文件。现在基本上 here,我已经描述了我的问题。

在一个页面上,我有一个警报,样式为 bootstrap。

定义就这么简单:

$('#wrongPasswordDiv').html('<br/><div class="alert alert-danger" id="wrongPWAlert" role="alert">Falsches Passwort. Bitte erneut versuchen!</div>');

此外,之前,Bootstrap css 文件包含:

<link rel="stylesheet" type="text/css" href="/bootstrapcss" />

bootstrapcss 使用 AltoRouter 路由到正确的 css 文件,这行代码:

$router->map('GET','/bootstrapcss','vendor/twbs/bootstrap/dist/css/bootstrap.css','bootstrapcss');

现在,在控制台中,它抛出一条警告说 Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost/bootstrapcss"

如果我使用 css 文件的完整路径、CDN 或删除 DOCTYPE,它工作正常。但我不想做这些变化中的任何一个...删除文档类型,可能会损坏其他功能,如果我使用完整的 css 路径,那么我就不需要路由...

关于如何发送 Content-type: text/css header 以使其正常工作的任何想法?

您应该在发送响应内容之前发送正确的 Content-Type。我不太了解 PHP,所以我可能无法以最好的方式阅读 CSS,但这是一个有效的示例:

使用这条路线:

$router->map('GET','/bootstrapcss','example.css','bootstrapcss');

然后在匹配的时候:

$match = $router->match();

if($match['name'] === 'bootstrapcss'){
    header("Content-Type: text/css");
    $fileName = $match['target'];
    echo file_get_contents($fileName);
    return;
}

对于上下文,我在这里有一个完整的例子:https://gist.github.com/kobi/09eaeeecb3406b193a84a674218798a9
这是基于 AltoRouter 上的基本示例:https://github.com/dannyvankooten/AltoRouter/tree/master/examples/basic