在内容安全策略头中使用nonce时,Google Chrome和Firefox都会返回错误。nonce值用于样式元素,即。<style id="some-id">// CSS </style>
例如Refused to apply inline style because it violates the following Content Security Policy directive: "default-src \'self\' \'nonce-random-value\'". Either the \'unsafe-inline\' keyword, a hash (\'sha256-specific-hash\'), or a nonce (\'nonce-...\') is required to enable inline execution.
nonce值也适用于脚本,例如//Javascript,其功能与预期一致。
这些文件的标题为:;
"style-src \'self\' https://fonts.googleapis.com \'nonce-".tu_custom_nonce_value () ."\';".
"script-src \'self\' https://maps.googleapis.com https://www.googletagmanager.com https://ajax.googleapis.com https://ajax.cloudflare.com https://static.cloudflareinsights.com https://cdnjs.cloudflare.com \'nonce-".tu_custom_nonce_value () ."\';";
根据Mozilla的文档-
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src, 为样式src指定nonce就足够了。
目前唯一的解决方法是为每个元素指定一个SHA256哈希值,因为每次更新WordPress时,更改都需要手动进行。
如有任何指导或帮助,将不胜感激。
最合适的回答,由SO网友:barryvanveen 整理而成
看起来你把nonce添加到了script-src
指令,但不符合style-src
指令。这可能就是为什么脚本可以工作而样式不能工作的原因。
可能的解决方案:
"style-src \'self\' https://fonts.googleapis.com \'nonce-".tu_custom_nonce_value () ."\';".
"script-src \'self\' https://maps.googleapis.com https://www.googletagmanager.com https://ajax.googleapis.com https://ajax.cloudflare.com https://static.cloudflareinsights.com https://cdnjs.cloudflare.com \'nonce-".tu_custom_nonce_value () ."\';";