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

Chrome扩展Manifest V3:Ubuntu虚拟机中gstatic.com的CSP不安全值错误

问题分析与解决

核心原因:Manifest V3的CSP强制规则

Chrome扩展Manifest V3对extension_pages的内容安全策略(CSP)有强制严格限制:script-src指令仅允许加载扩展包内的本地脚本资源,不支持任何远程脚本源(包括谷歌官方CDN如*.gstatic.com)。这就是为什么即使是可信的谷歌域名,也会被判定为“不安全”——它违反了Manifest V3的架构安全规范,而非域名本身存在风险。

触发校验的环境因素

虽然问题本质是Manifest V3的规则,但以下环境条件会触发这个报错:

  • Chrome版本:只要是支持Manifest V3的Chrome版本(88及以上),都会严格执行CSP规则,干净系统的Chrome默认是最新稳定版,自然会触发校验。
  • 开发模式校验逻辑:Chrome加载“已解压的扩展程序”时,会对Manifest文件进行全量合规性校验,不会因为是开发环境放宽限制。
  • 远程脚本加载方式:你在popup中直接引入Firebase的CDN脚本,这和Manifest V3“本地脚本优先”的原则冲突,即使CSP中添加了源也无法绕过。

解决步骤

  1. Firebase SDK本地化:下载对应版本的Firebase SDK文件(firebase-app-compat.js、firebase-auth-compat.js),放到扩展本地目录(比如js/lib/),修改popup.html中的脚本引用为本地路径:
    <script src="../js/lib/firebase-app-compat.js"></script>
    <script src="../js/lib/firebase-auth-compat.js"></script>
    
  2. 调整CSP配置:修改manifest.json中的content_security_policy,移除所有远程脚本源,仅保留本地允许的规则:
    "content_security_policy": {
      "extension_pages": "script-src 'self'; object-src 'self'"
    }
    
    如果Firebase需要使用eval相关功能,可能需要添加'unsafe-eval',但建议优先使用Firebase的模块化版本(而非compat兼容版)来避免这个需求。
  3. 验证Manifest合规性:确保其他配置符合V3要求,比如background使用service worker而非页面、权限声明正确等。

内容的提问来源于stack exchange,提问作者David Kessler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 12:12:11