Security ';严格动态';存在,因此禁用基于主机的白名单

Security ';严格动态';存在,因此禁用基于主机的白名单,security,content-security-policy,w3c,Security,Content Security Policy,W3c,我正在从源代码加载一个虚拟JS脚本,如下所示: CSP标头设置为: 脚本src'self''严格动态''nonce-{randomString}' 由于脚本源来自它的源主机,并且是CSP头允许的,因此loadMe.js应该加载并执行 相反,我得到: Refused to load the script 'http://www.this-host.test/loadMe.js' because it violates the following Content Security Policy

我正在从源代码加载一个虚拟JS脚本,如下所示:

CSP标头设置为:

脚本src'self''严格动态''nonce-{randomString}'

由于脚本源来自它的源主机,并且是
CSP
头允许的,因此
loadMe.js
应该加载并执行

相反,我得到:

Refused to load the script 'http://www.this-host.test/loadMe.js' because it 
violates the following Content Security Policy directive: "script-src 'self' 'strict-dynamic' 'nonce-{randomString}';. 
'strict-dynamic' is present, so host-based whitelisting is disabled.
Macintosh上测试;Mac OS X 10_15_2
,浏览器
Chrome/79.0.3945.117,Firefox/71.0

不过,我在Safari上没有收到这条消息

也许值得注意的是,我正在本地测试它


无论如何,当
CSP
头允许从源主机加载资源时,我不想使用
nonce-{randomString}

有什么想法吗?

根据服务器:

出于向后兼容性的原因,“严格动态”本身会导致浏览器仅依赖nonce或哈希,而忽略脚本src中的URI白名单

这告诉我,我应该这样定义它:

如果
loadMe.js”
在运行时加载另一个
script src
文件,请如下定义:

当然您必须信任
loadMe.js
源文件。

根据服务器:

出于向后兼容性的原因,“严格动态”本身会导致浏览器仅依赖nonce或哈希,而忽略脚本src中的URI白名单

这告诉我,我应该这样定义它:

如果
loadMe.js”
在运行时加载另一个
script src
文件,请如下定义:

当然,您必须信任
loadMe.js
源文件。