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

Chrome扩展兼容Firefox遇EvalError:CSP阻止eval()调用

Firefox Manifest V3 适配时 eval 被CSP拦截的解决方案
  • Firefox 对 Manifest V3 扩展的 extension_pages CSP 规则有严格限制,unsafe-eval 在此范围内是不被允许的——哪怕你显式声明也会被浏览器忽略,这是区别于 Chrome 的核心差异。
  • 不要尝试用 Function 构造函数替代 eval,Firefox 会将其归为同一类风险操作,同样会被拦截。
  • 可行方案1:使用沙箱脚本处理eval逻辑
    1. 在 manifest.json 中添加沙箱配置:
      "sandbox": {
        "pages": ["sandbox.html"],
        "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'none'"
      }
      
    2. 创建 sandbox.html 页面,将需要 eval 的逻辑放在这个页面中,通过 postMessage 与扩展的其他页面进行数据交互,传递执行结果。
  • 可行方案2:重构代码彻底避免eval
    梳理使用 eval 的场景,将动态执行字符串的逻辑替换为静态代码实现。比如把动态函数调用改成预先定义的函数映射、属性访问等方式,从根源上规避CSP限制。
  • 确保使用最新版本的 Firefox(至少109版本以上),旧版本对 Manifest V3 的CSP支持存在兼容性问题。

内容的提问来源于stack exchange,提问作者Ujjaval Vaihnav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:24:57