Webpack 能夠為載入的所有腳本新增 `nonce`。若要啟用此功能,請設定 `__webpack_nonce__` 變數,並將它包含在輸入腳本中。接著會產生一個獨特的基於雜湊的 `nonce`,並提供給每個獨特的頁面檢視(這就是為什麼 `__webpack_nonce__` 指定在輸入檔案中,而不是在組態中)。請注意,`__webpack_nonce__` 應始終為 base64 編碼字串。
在輸入檔案中
// ...
__webpack_nonce__ = 'c29tZSBjb29sIHN0cmluZyB3aWxsIHBvcCB1cCAxMjM=';
// ...
請注意,CSP 預設並未啟用。必須隨文件傳送對應的標頭 Content-Security-Policy
或 meta 標籤 <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 也能使用受信任類型來載入動態建構的腳本,以遵守 CSP require-trusted-types-for
指令限制。請參閱 output.trustedTypes
組態選項。