“[仅报告] 拒绝加载字体...”控制台上的错误消息

Posted

技术标签:

【中文标题】“[仅报告] 拒绝加载字体...”控制台上的错误消息【英文标题】:"[Report Only] Refused to load the font..." error message on console 【发布时间】:2014-12-21 17:42:20 【问题描述】:

更具体地说:

[Report Only] Refused to load the font 'data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAABBQAAoAAAAAG…H8zVsjnmMx0GcZ2HGViNOySWEa9fvEQtW43Nm+EOO0ZIpdLbMXoVzPJkcfHT6U+gLEpz/MAAAA' because it violates the following Content Security Policy directive: "font-src 'self'".

这是我在environment.jscontentSecurityPolicy 对象:

contentSecurityPolicy: 
  'default-src': "'none'",
  'script-src': "'self' 'unsafe-inline' 'unsafe-eval' connect.facebook.net",
  'connect-src': "'self'",
  'img-src': "'self' www.facebook.com",
  'style-src': "'self' 'unsafe-inline'",
  'frame-src': "s-static.ak.facebook.com static.ak.facebook.com www.facebook.com",
  'report-uri': "http://localhost:4200"
,

有什么问题吗?

【问题讨论】:

如果我没记错的话,该消息与您的政策相矛盾。您没有指定 font-src 这意味着该值应该采用 default-src 的值(在这种情况下为“无”) 【参考方案1】:

您可能需要考虑使用 coma ',' 来分隔您的异常:

这是网站上发布的示例:https://github.com/helmetjs/csp

const csp = require('helmet-csp')

app.use(csp(
  // Specify directives as normal.
  directives: 
    defaultSrc: ["'self'", 'default.com'],
    scriptSrc: ["'self'", "'unsafe-inline'"],
    styleSrc: ['style.com'],
    fontSrc: ["'self'", 'fonts.com'],
    imgSrc: ['img.com', 'data:'],
    sandbox: ['allow-forms', 'allow-scripts'],
    reportUri: '/report-violation',
    objectSrc: ["'none'"],
    upgradeInsecureRequests: true,
    workerSrc: false  // This is not set.
  ,

  // This module will detect common mistakes in your directives and throw errors
  // if it finds any. To disable this, enable "loose mode".
  loose: false,

  // Set to true if you only want browsers to report errors, not block them.
  // You may also set this to a function(req, res) in order to decide dynamically
  // whether to use reportOnly mode, e.g., to allow for a dynamic kill switch.
  reportOnly: false,

  // Set to true if you want to blindly set all headers: Content-Security-Policy,
  // X-WebKit-CSP, and X-Content-Security-Policy.
  setAllHeaders: false,

  // Set to true if you want to disable CSP on android where it can be buggy.
  disableAndroid: false,

  // Set to false if you want to completely disable any user-agent sniffing.
  // This may make the headers less compatible but it will be much faster.
  // This defaults to `true`.
  browserSniff: true
))

【讨论】:

【参考方案2】:

我花了很长时间试图弄清楚为什么我的聚合物代码的构建版本违反了我在 firefox 和 safari 中的 CSP(在 chrome 中工作),结果是聚合物组件包含内联脚本,它们可能会导致 CSP 问题无法使用 'unsafe-inline' 和 'unsafe-eval' 标头解决 Firefox 和 safari,但是如果您的脚本 CSP 包含 data: 这将允许在聚合物构建期间编译的内联脚本在您的Web 应用程序,而不违反 CSP。以为我会在这里分享,因为这个答案帮助我解决了我的问题。

【讨论】:

【参考方案3】:

添加'font-src': "data:", 以将正在加载的字体列入白名单。

【讨论】:

我用过'font-src': "'self' data:",效果很好,谢谢 font-src 'self' data: https://fonts.gstatic.com https://fonts.googleapis.com/;我修改了你的提示,现在它对我有用。 例如playframework: contentSecurityPolicy = $play.filters.headers.contentSecurityPolicy" font-src 'self' 数据: fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com;"

以上是关于“[仅报告] 拒绝加载字体...”控制台上的错误消息的主要内容,如果未能解决你的问题,请参考以下文章

Play 控制台上的测试版发布错误

通过公共 IP 打开时控制台上的 Django 部署错误

在 heroku 上部署反应应用程序时出现问题 - 控制台上的错误代码 503

在 Firebase Firestore 中保存数据时在控制台上出现错误

gulp-tslint 不在控制台上打印 linting 错误

在系统控制台上找不到 jhipster?