如何修改Nginx的CSP头以允许内联WebAssembly(Wasm)执行?
解决Nginx CSP阻止内联WebAssembly(Wasm)执行的问题
你的Nginx当前CSP配置为:
add_header Content-Security-Policy "default-src 'self' http: https: ws: wss: data: blob: 'unsafe-inline'; frame-ancestors 'self';" always;
遇到的报错是:
Content Security Policy: The page’s settings blocked the loading of a resource at wasm-eval (“default-src”).
直接把wasm-eval加到default-src里无效,因为wasm-eval是**script-src专属的权限关键字**,无法通过default-src的兜底规则生效。
正确的修改方案
需要显式添加script-src指令,将'wasm-eval'包含进去,同时保留原有default-src的兜底规则:
add_header Content-Security-Policy "default-src 'self' http: https: ws: wss: data: blob: 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'wasm-eval'; frame-ancestors 'self';" always;
补充说明
- 如果页面需要在Worker环境中执行Wasm,还需额外添加
worker-src 'self' 'wasm-eval';规则 - 若业务场景允许,建议用Wasm文件的哈希/非ce值替代
'wasm-eval',能进一步提升CSP的安全性
内容的提问来源于stack exchange,提问作者TJBlackman
相关产品推荐
相关产品推荐

