j r*_*roc 1 amazon-s3 node.js express node-modules helmet.js
我正在使用 npm 头盔来保护我的 Express 应用程序,但我希望允许渲染 S3 存储桶中的图像。当我使用头盔时出现此错误Refused to load the image '<URL>' because it violates the following Content Security Policy directive: "img-src 'self' data:".,这是有道理的,我违反了头盔实现的 CSP。
我在他们的文档中找到的唯一内容是:
app.use(
helmet({
contentSecurityPolicy: false,
})
);
Run Code Online (Sandbox Code Playgroud)
这确实允许我的图像渲染,但我仍然想要头盔提供的 CSP。我只需要基本上将我的 S3 链接列入白名单,但我在他们的文档中找不到有关此主题的任何内容
这里是头盔的维护者。
Helmet 默认设置几个与安全相关的标头,包括一个名为Content-Security-Policy. 内容安全策略(CSP)实际上是一个允许页面加载和执行操作的白名单。
您看到一条错误,表明您的 CSP 不允许从您的域 ( 'self') 或数据 URI ( data:) 以外的任何位置加载图像。你可以用类似的方法来解决这个问题:
app.use(
helmet({
contentSecurityPolicy: {
directives: {
...helmet.contentSecurityPolicy.getDefaultDirectives(),
"img-src": ["'self'", "s3.amazonaws.com"],
},
},
})
);
Run Code Online (Sandbox Code Playgroud)
有关 CSP 的更多信息,请查看MDN 上的此介绍。
我一直在考虑在 Helmet 的文档中更清楚地说明这一点,所以感谢您提出这个问题。
| 归档时间: |
|
| 查看次数: |
3914 次 |
| 最近记录: |