Security ';严格动态';存在,因此禁用基于主机的白名单
我正在从源代码加载一个虚拟JS脚本,如下所示: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
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
源文件。