You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何消除内容安全策略(CSP)中的'unsafe-eval'错误?

解决NodeJS后端CSP配置中WebAssembly 'unsafe-eval'报错问题

你遇到的问题根源是CSP配置的语法错误,导致script-src的unsafe-eval等规则没有被正确识别,服务器依然只应用了script-src 'self'的限制,所以WebAssembly模块无法被编译实例化。

错误配置的问题点

你的代码里,script-src的写法不符合对象语法规范:

csp.extend(app, {
  policy: {
    directives: {
      'default-src': ['self'],
      'style-src': ['self', 'unsafe-inline', 'https:'],
      'font-src': ['self', 'https://fonts.gstatic.com'],
      'script-src': 'self', // 此处单独赋值'self'
      'unsafe-inline',       // 这几项变成独立属性,不属于script-src的配置项
      'unsafe-eval',
      'data',
      'blob',
      'ws://localhost:56558/',
    },
  },
});

这种写法会让unsafe-inline、unsafe-eval等成为directives对象下的单独属性,而非script-src的子项,所以CSP规则里的script-src实际上只有'self'。

修正后的配置

把script-src的所有源放在一个数组中,确保语法正确:

csp.extend(app, {
  policy: {
    directives: {
      'default-src': ['self'],
      'style-src': ['self', 'unsafe-inline', 'https:'],
      'font-src': ['self', 'https://fonts.gstatic.com'],
      'script-src': [
        'self',
        'unsafe-inline',
        'unsafe-eval',
        'data:',
        'blob:',
        'ws://localhost:56558/'
      ]
    },
  },
});

注意:data和blob需要加上冒号(data:、blob:),否则CSP可能无法正确识别这些源类型。

额外验证点

  • 重启本地服务器,确保新的CSP配置生效
  • 检查浏览器控制台的CSP报告,确认script-src规则已经包含unsafe-eval

内容的提问来源于stack exchange,提问作者Favour Oghenekowho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 02:10:52