Html 忽略来自CDN的CSS链接
加载我的站点时,我突然遇到问题。使用较新版本的Chromium 从Inspect元素中可以看出,我的一个样式表似乎没有被应用到元素中 有关链接如下:Html 忽略来自CDN的CSS链接,html,css,chromium,Html,Css,Chromium,加载我的站点时,我突然遇到问题。使用较新版本的Chromium 从Inspect元素中可以看出,我的一个样式表似乎没有被应用到元素中 有关链接如下: 但是,主CSS似乎已被处理,并且正在将CSS分配给元素,即: 这一切都可以在Firefox和Safari上运行。它不适用于以下版本的Chromium 版本45.0.2454.85 Ubuntu 14.04(64位) 版本44.0.2403.89 Ubuntu 14.04(64位) 这些浏览器是从以前的Chromium浏览器升级而来的。 那么,铬
但是,主CSS似乎已被处理,并且正在将CSS分配给元素,即:
这一切都可以在Firefox和Safari上运行。它不适用于以下版本的Chromium
版本45.0.2454.85 Ubuntu 14.04(64位)
版本44.0.2403.89 Ubuntu 14.04(64位)
这些浏览器是从以前的Chromium浏览器升级而来的。
那么,铬的升级有什么变化吗?自从升级后,我再也没有旧版本要测试了
如果我下载style.css
的内容,并使用开发工具插入一个
元素,其中包含style.css
的内容,它就会工作。所以,我相信这不是Chrome特有的语法问题
此外,我还看到了其他答案,比如CDN返回了错误的二进制/八位字节流的内容类型
,但是这两个CSS文件的内容类型都是相同的,那么为什么一个可以工作而另一个不能工作呢?无论如何,我无法真正更改响应类型,因为我不控制CDN
在您开始指出链接中的type=“text/css”
和media=“all”
和http:
差异之前,我也对它们进行了更改。Inspect元素表示它已下载了style.css
文件,并表示其“类型”为“样式表”,与normallayout.css的类型相同
我甚至通过将页面下载到一个文件中,在本地进行编辑,并从文件中加载相同的结果,对链接进行了修改,使其看起来完全相同。试试看
所以,我真的不知道发生了什么
为什么只有铬?与其他浏览器的不兼容性是什么
谢谢。正如上面的评论中所提到的,问题实际上是内容类型
标题
具体来说,该文件使用内容类型:undefined
头提供。它应该是内容类型:text/css
您提到的另一个文件提供了内容类型:text/css
,这就是它按预期工作的原因
自行验证内容类型
要自己验证标题,可以使用带有-I
选项的curl
命令,如下所示:
curl -I http://objects.dreamhost.com/busme-prod-files/main/538e298e22f324388b007ab8/original/style.css
wget -S http://objects.dreamhost.com/busme-prod-files/main/538e298e22f324388b007ab8/original/style.css
产生此输出的:
HTTP/1.1200正常
内容长度:16795
接受范围:字节
最后修改:2014年6月3日星期二20:01:18 GMT
ETag:“06b3748eba4f2e5ccb70e8444abd5c77”
内容类型:未定义
日期:2015年9月24日星期四格林尼治标准时间21:33:18
将其与运行此进行比较:
curl -I http://busme-prod-assets.objects.dreamhost.com/assets/normal-layout-3df2197619a7f407056e8569a5b5819f.css
这就产生了:
HTTP/1.1200正常
内容长度:239447
接受范围:字节
最后修改时间:2015年5月7日星期四05:44:24 GMT
ETag:“e4b17d7e6405120b1488079bb0081e6f”
缓存控制:公共,最大年龄=31557600
到期时间:2016年5月6日星期五11:44:23 GMT
内容类型:文本/css
日期:2015年9月24日星期四格林威治时间21:33:36
如果没有安装curl
命令,但安装了wget
命令,则可以使用wget-S
获得类似信息,如下所示:
curl -I http://objects.dreamhost.com/busme-prod-files/main/538e298e22f324388b007ab8/original/style.css
wget -S http://objects.dreamhost.com/busme-prod-files/main/538e298e22f324388b007ab8/original/style.css
此外,我还看到了其他答案,比如CDN正在回归
二进制/八位字节流的内容类型错误,但此内容类型无效
这两个CSS文件都是相同的,那么为什么有一个是相同的呢
工作而不是其他
正如上面的curl-I
输出所示,您提到的文件的内容类型实际上并不相同;一个有正确的内容类型:text/css
标题,而另一个没有
如果您能够从http://busme-prod-assets.objects.dreamhost.com
具有正确的内容类型:text/css
标题,那么您应该能够确保curl-Ihttp://objects.dreamhost.com/busme-prod-files
文件也会获得正确的内容类型
问题很可能是内容类型不正确。与dreamhost交谈,你必须能够设置内容类型,否则CDN根本不可用。@EmilStenström,那么我真的不明白正常布局.css
的工作原理,因为来自InspectElement的所有指示都是它来自同一个地方,并且具有相同的内容类型。正如下面使用curl-I
的回答所述,normal layout.css
确实有一个内容类型:text/css
的响应标题,而对于内容类型,style.css
的响应头为undefined
。然而,我不知道为什么Chrome的开发者工具在网络标签上说“二进制/八位字节流”
,这正是我今天早上做测试的想法。现在我想知道为什么Chromium Developer Tools在网络选项卡中都报告为二进制/八位字节流。我的下一个问题是如何告诉Dreamhost(我不喜欢也可能会放弃)如何进行这种特定的内容类型指定。是的,当我有时间时,我将尝试调查最近Chromium中围绕这一点发生的变化。就Dreamhost而言,如果您可以在Digital Ocean或其他地方进行自托管,您肯定会获得更大的灵活性(但代价是需要自己进行更多的系统维护),这是给其他人的提示。我使用一个名为s3cmd
的Ubuntu可用python工具将文件重新上传到Dreamhost,但我不得不修改它以使用Dreamhost而不是Amazon。我的CMS上传的文件没有正确的mimetype(我猜我还需要修复其他一些东西)。我分别将所有.css
文件更改为text/css
,将.js
文件更改为text/javascript
。现在