内容安全策略:与错误消息相矛盾

Content Security Policy: contradict error message

Refused to load media from 'https://s3.amazonaws.com/my-public-bucket/file.txt' because it violates the following Content Security Policy directive: "media-src https://s3.amazonaws.com/my-public-bucket https://my-private-bucket.s3.amazonaws.com".

怎么可能?我可以加载例如 https://my-private-bucket.s3.amazonaws.com/file.txt

已通过向有问题的资源添加 / 进行修复,但它看起来很奇怪 - 为什么第二个指令允许没有存储的媒体?

如果没有斜杠,CSP 会将第一个指令读取为允许特定文件,而不是目录;通常这是 https://s3.amazonaws.com/file.js 之类的。

然而,第二个指令,因为它是根域,被解读为允许整个域(包括子域)。

这完全取决于您想要的具体程度,CSP 具有很大的灵活性。您可以指定关键字、确切的资源到文件名、目录或整个域。常见的做法往往是将整个域列入白名单,但如果您确定不需要它,那么稍微具体一点也无妨(直到需要)。

您可以进一步阅读 here in the W3 spec