首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fonts头盔cps与字体发行

fonts头盔cps与字体发行
EN

Stack Overflow用户
提问于 2016-04-11 00:33:06
回答 1查看 1.2K关注 0票数 1

我增加了头盔能力,设置CPS,但有一个问题的字体。一个简单的例子如下:

但是,除了它抱怨的字体之外,它正确地加载了所有的资产。

sample.css

代码语言:javascript
复制
src: url("/assets/fonts/font.eot") 

Example.com

代码语言:javascript
复制
app.use(csp({
    directives: {
        defaultSrc: ["'self'"],
        scriptSrc: ["'self'", "'unsafe-inline'"],
        styleSrc: ["'self'", "'unsafe-inline'"],
        imgSrc: ["'self'"],
        fontSrc: ["'self'", "'unsafe-inline'"],
        sandbox: ['allow-forms', 'allow-scripts'],
        reportUri: '/report-violation',
        objectSrc: [],
    },
    reportOnly: false,
    setAllHeaders: false,
    disableAndroid: false,
    browserSniff: true
}));

在浏览器中,它给出了字体的错误消息。

代码语言:javascript
复制
Font from origin 'http://localhost:3000' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

我是不是遗漏了什么东西,使字体在浏览器内工作?

在快件中,我确保了公共和资产文件的正确设置。(从资产到资产,一切都正常)。

代码语言:javascript
复制
app.use("/assets", express.static(__dirname + "/assets"));
app.use("/public", express.static(__dirname + "/public"));
EN

回答 1

Stack Overflow用户

发布于 2016-04-19 05:27:30

这是CORS (交叉源资源共享)问题,我是从eot文件末尾的一个查询中获得的,例如,类似于字体-可怕的css,因为css使用了

代码语言:javascript
复制
src: url(...)

而不是

代码语言:javascript
复制
src: local(...)

如果它找不到查询字符串(例如?v=4.6.1 ),它就会进行查询来定位该字符串,从而引发CORS问题。

来自MDN的@ 一些信息 -face专门指出了这个问题:

Web字体受到相同的域限制(字体文件必须与使用它们的页面位于同一个域上),除非使用HTTP访问控制来放松此限制。

从该文档中链接的MDN CORS信息

所以要么使用本地关键字,然后错误查询就会悄然失败,要么您可以使用曼宁网站中的类似内容使用express打开CORS。

app.use(function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); });

但是当您使用CSP时,您会想深入研究如何进一步锁定CORS头,我想?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36538077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档