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

Chrome扩展Manifest V3因远程托管代码被拒,Firebase SDK问题求助

解决Chrome扩展Manifest V3因「远程托管代码」被拒的方案

核心问题定位

Chrome商店拒绝的核心原因是检测到service-worker.js中的retrieveRecaptchaToken()函数存在远程代码加载行为——这里要明确区分正常API数据请求和远程脚本/代码加载:前者合规,后者才是违反政策的关键。


具体解决步骤

1. 排查并修正retrieveRecaptchaToken()函数

  • 先查看自动生成的retrieveRecaptchaToken()代码:如果只是通过fetch调用reCAPTCHA的API接口获取token(仅数据请求),这其实合规,可能是商店误判;如果是通过document.createElement('script')这类方式动态加载https://www.google.com/recaptcha/api.js远程脚本,这才是违规根源。
  • 若为动态加载脚本:
    • 下载对应的reCAPTCHA脚本文件到本地项目目录
    • 在Rollup配置中把该脚本纳入打包范围,确保最终的service-worker.js包含完整脚本代码
    • 移除原函数中动态加载远程脚本的逻辑,改用本地打包后的代码执行验证流程

2. 调整Rollup配置,确保Firebase SDK完全静态打包

Firebase V9模块化SDK若配置不当,可能存在懒加载/动态导入的代码片段,被商店检测为远程托管代码:

  • 确保@rollup/plugin-node-resolve和@rollup/plugin-commonjs正确解析所有Firebase依赖
  • 在rollup.config.js中设置output: { format: 'iife' }(适配service-worker环境),禁用动态导入
  • 打包后解压检查service-worker.js,确认没有import()动态导入语句或加载远程JS的fetch/XMLHttpRequest调用

3. 确认自有网站认证与Firestore操作的合规性

  • 从授权自有网站获取token的请求:只要在manifest.json的host_permissions中正确声明了该网站域名(如"host_permissions": ["https://your-custom-domain.com/*"]),属于正常数据交互,完全合规,无需修改。
  • Firestore操作:确保Firebase SDK已完全本地打包,同时在manifest.json中添加Firestore的API域名到host_permissions(如"https://firestore.googleapis.com/*"),避免权限问题触发额外检测。

4. 提交前的验证

  • 使用Chrome官方扩展打包工具生成正式CRX包,不要提交开发环境代码
  • 解压CRX包,逐行检查service-worker.js,确认无任何远程代码加载逻辑
  • 本地测试所有功能:reCAPTCHA token获取、用户认证、Firestore读写均正常运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:07:20