我正在 Django 网站上工作(从版本 2 升级到版本 4),我必须在其中应用内容安全策略。 在其他项目中,我使用项目设置使用
django-csp
完成此操作,但在本例中,我仅将 'csp.middleware.CSPMiddleware',
添加到 MIDDLEWARE
设置,并且所有 CSP 均由 <meta http-equiv="Content-Security-Policy" ...
标签完成。这是第一个奇怪的事情。
错误是:
Refused to load the stylesheet 'https://fonts.googleapis.com/css?family=Roboto:wght@300' because it violates the following Content Security Policy directive: "default-src 'self' 'nonce-d0R7xtS9JR5LNg6UqQ5FCg=='". Note that 'style-src-elem' was not explicitly set, so 'default-src' is used as a fallback.
第二个奇怪的事情是我设置了
style-src-elem
,但是错误说我没有设置。
为什么被屏蔽?
字体可以在这里
找到
我使用了 Google 字体上官方 CSP 网站的提示here,一切似乎都正常,但问题仍然存在。
定义多个策略时,内容需要传递所有策略。您在meta中设置了5个不同的策略,并且错误消息中提到的策略不在其中,这意味着它作为响应标头。您将需要修改/删除作为响应标头提供的策略。合并为一项组合策略也可能是件好事,最好避免使用元。