Webpack 能够为其加载的所有脚本添加 nonce
。要激活此功能,请设置 __webpack_nonce__
变量并将其包含在您的入口脚本中。然后将为每个唯一的页面视图生成一个唯一的基于哈希的 nonce
(这就是为什么 __webpack_nonce__
在入口文件中指定而不是在配置中指定的原因)。请注意,__webpack_nonce__
始终应该是 base64 编码的字符串。
在入口文件中
// ...
__webpack_nonce__ = 'c29tZSBjb29sIHN0cmluZyB3aWxsIHBvcCB1cCAxMjM=';
// ...
请注意,CSP 默认情况下未启用。需要使用相应的标头 Content-Security-Policy
或元标记 <meta http-equiv="Content-Security-Policy" ...>
发送文档,以指示浏览器启用 CSP。以下是一个包含 CDN 白名单 URL 的 CSP 标头的示例
Content-Security-Policy: default-src 'self'; script-src 'self'
https://trusted.cdn.com;
有关 CSP 和 nonce
属性的更多信息,请参阅本页底部的 **进一步阅读** 部分。
Webpack 还能够使用 Trusted Types 加载动态构建的脚本,以遵守 CSP require-trusted-types-for
指令限制。请参阅 output.trustedTypes
配置选项。