1

有其他人对 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 错误

Safari 错误

4

1 回答 1

2

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

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

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

这可能已在最新版本的 safari 上修复(尚未测试),但这不会改变我对做什么的建议(所以你不会破坏事情)。

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

于 2016-08-08T18:30:03.407 回答