拒绝应用来自 'xxx/style.css' 的样式,因为它的 MIME 类型 ('text/html') 不是受支持的样式表 MIME 类型

Posted

技术标签:

【中文标题】拒绝应用来自 \'xxx/style.css\' 的样式,因为它的 MIME 类型 (\'text/html\') 不是受支持的样式表 MIME 类型【英文标题】:Refused to apply style from 'xxx/style.css' because its MIME type ('text/html') is not a supported stylesheet MIME type拒绝应用来自 'xxx/style.css' 的样式,因为它的 MIME 类型 ('text/html') 不是受支持的样式表 MIME 类型 【发布时间】:2021-11-29 17:29:18 【问题描述】:

我是Google App Engine 的新手,我正在尝试将我一直在本地运行的项目托管在那里。

我的 index.html 文件出现了,但它没有应用 CSS。我不完全确定 MIME 类型是什么,我也不完全确定它试图从我的代码中的哪个位置获取它。我只是假设它只会加载我在 HTML 内容中拥有的标签,并像使用 browsersync 时那样应用它。文件 index.html 通过以下方式加载:

app.get('/', (req, res) => 
  res.sendFile(path.join(__dirname, '/index.html'));
);

CSS 被加载到文件 index.html:

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

【问题讨论】:

你能在加载 css 的地方显示一些 html 吗? 编辑过的原帖 链接中不需要 type 属性。最后用 /> 关闭链接标签。即使在 html 中不是必需的,但它在 xhtml 中。 还要确保css文件不包含html标签 看起来无论您请求什么文件,包括 style.css,您的服务器都会为 index.html 提供服务。由于这是一个 html 文件,而不是 css 文件,因此浏览器会拒绝它并显示您的标题中的错误。 【参考方案1】:

当你从服务器返回样式表时,你应该将 header 的 content-type 属性设置为 text/css 即你应该有类似

<link href="style.css" rel="stylesheet" />

app.get('/style', (req, res) => 
    res.setHeader('Content-Type', 'text/css');
    res.sendFile(path.join(__dirname, '/style.css'));
);

app.get('/', (req, res) => 
    res.setHeader('Content-Type', 'text/html');
    res.sendFile(path.join(__dirname, '/index.html'));
);


【讨论】:

【参考方案2】:

永久修复:

文件server.js

app.use(express.static('./public'));

并将所有静态资源移动到项目中的公共目录。那么你的 HTML 内容是有效的。

Source

【讨论】:

【参考方案3】:

问题可能出在以 cmets 开头的 CSS 库

在开发中,如果样式表以一些 cmets 开头,它可能被视为与 CSS 不同的东西。

删除库并将其放入供应商文件中,可能会解决问题。

Node.js 应用程序的另一种可能性是您应该检查您的配置。

例子:

app.use(express.static(__dirname + ‘/public’));

请注意,/public 末尾没有正斜杠,因此您需要将其包含在 HTML 的 href 选项中:

例子:

href=”/css/style.css”>

如果您确实包含了正斜杠/public/,那么您可以直接使用href=”css/style.css”&gt;.

确保 CSS 名称为 style.css,末尾没有第二个“s”。这也可能导致问题。

【讨论】:

以上是关于拒绝应用来自 'xxx/style.css' 的样式,因为它的 MIME 类型 ('text/html') 不是受支持的样式表 MIME 类型的主要内容,如果未能解决你的问题,请参考以下文章

渲染时拒绝应用来自 auth/css 的样式

“拒绝应用来自 link 的样式,因为它的 MIME 类型不受支持且已启用严格的 MIME checkinis。”在 Vue+Vuetify 应用中

来自 Heroku / AWS 的外部 API 的访问被拒绝

部署 BizTalk 应用程序时出错 - 访问被拒绝。 (来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))

在 phpmyadmin 中重新创建用户后:来自 c# 应用程序的“用户 'root'@'name_of_computer' 的访问被拒绝”

应用内购买拒绝和新 IPA