头盔CSP在Safari浏览器中不起作用

时间:2016-08-07 18:06:58

标签: node.js express content-security-policy helmet.js

还有其他人在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 Errors

1 个答案:

答案 0 :(得分:2)

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