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

如何在Chrome扩展中使用Firebase CDN并绕过CSP限制

解决Chrome扩展集成Firebase CDN的CSP问题

Chrome扩展的CSP规则和普通网页不同,meta标签设置的CSP会被扩展manifest配置直接覆盖,这是你用meta nonce无效的核心原因。以下是具体解决方案:

1. 修正Manifest.json的CSP配置

打开manifest.json,根据你的Manifest版本配置content_security_policy,明确允许Firebase相关CDN域名的脚本加载:

  • Manifest V3示例:
{
  "manifest_version": 3,
  "content_security_policy": {
    "extension_pages": "script-src 'self' https://www.gstatic.com https://firebase.googleapis.com; object-src 'none';"
  }
}
  • Manifest V2示例:
{
  "manifest_version": 2,
  "content_security_policy": "script-src 'self' https://www.gstatic.com https://firebase.googleapis.com; object-src 'none'"
}

注:如果使用Firebase数据库、存储等服务,可补充对应域名,比如https://*.firebaseio.com

2. 把Firebase初始化代码移到外部脚本

完全移除HTML中的内联脚本,创建独立脚本文件(如firebase-init.js)存放初始化逻辑:

// firebase-init.js
// 按需导入Firebase模块(以ES模块为例)
import { initializeApp } from "https://www.gstatic.com/firebasejs/9.23.0/firebase-app.js";
import { getAuth } from "https://www.gstatic.com/firebasejs/9.23.0/firebase-auth.js";

const firebaseConfig = {
  // 你的Firebase项目配置
};

const app = initializeApp(firebaseConfig);
const auth = getAuth(app);
// 其他Firebase服务初始化逻辑

然后在HTML中引入该脚本:

<script type="module" src="firebase-init.js"></script>

3. 替换内联事件处理

如果页面中有onclick="xxx"这类内联事件,全部改为外部脚本绑定:

// 替代内联onclick
document.getElementById('target-btn').addEventListener('click', () => {
  // 原内联逻辑
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:01:03