Safari 似乎不支持用于预加载 JS 的 link 标签上的 CSP 随机数
Safari seems to not support CSP nonces on link tags being used to preload JS
我在 Mac 上使用 Safari 14.0.3,并呈现以下 link 标签:
<link rel="preload" href="/_next/static/chunks/194.js?ts=1619710448027" as="script" nonce="Hkb65_tcgqVrk2Zk">
我的 CSP header 包括以下内容:
script-src 'strict-dynamic' 'unsafe-eval' 'nonce-Hkb65_tcgqVrk2Zk';
如您所见,已将正确的随机数应用于 link 标记。这在 Chrome 和 FF 中正常工作,但 Safari 抛出错误:
[Error] [Report Only] Refused to load https://dev.example.com:4200/_next/static/chunks/194.js?ts=1619710448027 because it does not appear in the script-src directive of the Content Security Policy.
我无法在网上找到任何关于 Safari 不支持 link
标签上的随机数的信息。希望有人能告诉我如何解决这个问题,或者给我指出至少可以确认这是不可能的资源。
是的,Safari 不支持 'nonce-value'
的 <link rel="preload"
结构。顺便说一句,Firefox 浏览器 - 即使没有 'nonce-value'
,它也允许预加载资源。只有 Chrome 支持预加载脚本和样式中的随机数。
您不必担心 'self'
令牌的使用 - 它 is cancelled 在 CSP3 浏览器(现代 Chrome 和 Firefox)中与 'strict-dynamic'
令牌配对时。因此 'self'
仅适用于不支持 'strict-dynamic'
.
的 Safari
我认为您找到了一个很好的解决问题的决定 - 在浏览器向后兼容模式下使用 CSP。
我在 Mac 上使用 Safari 14.0.3,并呈现以下 link 标签:
<link rel="preload" href="/_next/static/chunks/194.js?ts=1619710448027" as="script" nonce="Hkb65_tcgqVrk2Zk">
我的 CSP header 包括以下内容:
script-src 'strict-dynamic' 'unsafe-eval' 'nonce-Hkb65_tcgqVrk2Zk';
如您所见,已将正确的随机数应用于 link 标记。这在 Chrome 和 FF 中正常工作,但 Safari 抛出错误:
[Error] [Report Only] Refused to load https://dev.example.com:4200/_next/static/chunks/194.js?ts=1619710448027 because it does not appear in the script-src directive of the Content Security Policy.
我无法在网上找到任何关于 Safari 不支持 link
标签上的随机数的信息。希望有人能告诉我如何解决这个问题,或者给我指出至少可以确认这是不可能的资源。
是的,Safari 不支持 'nonce-value'
的 <link rel="preload"
结构。顺便说一句,Firefox 浏览器 - 即使没有 'nonce-value'
,它也允许预加载资源。只有 Chrome 支持预加载脚本和样式中的随机数。
您不必担心 'self'
令牌的使用 - 它 is cancelled 在 CSP3 浏览器(现代 Chrome 和 Firefox)中与 'strict-dynamic'
令牌配对时。因此 'self'
仅适用于不支持 'strict-dynamic'
.
的 Safari
我认为您找到了一个很好的解决问题的决定 - 在浏览器向后兼容模式下使用 CSP。