Helmet CSP 在 Safari 浏览器中不工作

Helmet CSP Not Working in Safari Browsers

其他人是否对 Safari 中的 Helmet 内容安全策略有任何问题?

https://github.com/helmetjs/helmet

app.use(helmet.contentSecurityPolicy({
  directives: {
    defaultSrc: ["'self'"],
    scriptSrc: ["'self'",'code.jquery.com','cdnjs.cloudflare.com'],
    styleSrc: ["'self'","'unsafe-inline'",'fonts.googleapis.com','cdnjs.cloudflare.com'],
    imgSrc: ["'self'"],
    fontSrc: ['fonts.googleapis.com','fonts.gstatic.com','cdnjs.cloudflare.com'],
    connectSrc: [],
  },

  reportOnly:false,
  setAllHeaders: false,
  disableAndroid: false

}));

这在 Chrome、Firefox 和 IE 中工作正常。但是我在 Safari 中遇到了这些错误。

Safari Errors

Safari 要求您指定方案,因为它不允许根据规范升级到 https。相反,它默认为当前页面的方案 - 我假设您正在 http 上查看页面。我不指定 http,而是指定:

styleSrc: ["'self'","'unsafe-inline'",'https://fonts.googleapis.com','https://cdnjs.cloudflare.com'],

要求https 用于所有流量。不要在您的政策中使用 http: 方案 :smile:

这可能已在最新版本的 safari 上修复(尚未测试),但这不会改变我的建议(这样你就不会破坏东西)。

https://twitter.com/Scott_Helme/status/642630334983614464