开发Chrome扩展时添加externally_connectable后被禁用,求排查与恢复方法
嘿,我来帮你拆解这个问题——你遇到的情况其实是Chrome扩展安全政策在起作用,咱们一步步理清楚:
你添加的"externally_connectable": { "ids": ["*"] }配置违反了Chrome Web Store的扩展政策。用通配符*允许所有扩展和你的扩展建立通信连接,属于严重的安全隐患:任何恶意扩展都能向你的扩展发送消息,甚至借你的扩展权限执行操作,这被判定为权限滥用,所以Chrome会直接禁用你的扩展,这类政策违规通常是后台自动检测触发的,可能不会给出明确警告。
先修正manifest.json配置
把通配符*替换成具体的信任扩展ID列表,只允许你认可的扩展和你的扩展通信。比如:"externally_connectable": { "ids": ["abcdefghijklmnopqrstuvwxyzabcdef", "1234567890abcdefghijklmnopqrstuv"] }另外提一句:如果你的需求只是让自己的内容脚本和后台脚本通信,其实完全不需要
externally_connectable配置——内容脚本和后台本来就可以通过chrome.runtime.sendMessage直接通信,没必要开放外部连接权限。重新加载扩展
打开Chrome的扩展管理页面(输入chrome://extensions/),开启开发者模式,要么点击「加载已解压的扩展程序」选择你的扩展目录,要么点击扩展卡片上的「重新加载」按钮。只要配置修改合规,扩展就能正常启用了。
如果你的真实需求是让网页中的原生脚本(不是你注入的内容脚本)和扩展通信,那正确的做法是用"matches"字段指定允许通信的域名,而不是开放所有扩展ID。比如:
"externally_connectable": { "matches": ["https://your-trusted-site.com/*"] }
这样只有指定域名下的网页脚本才能向你的扩展发消息,既满足需求又符合安全政策。
内容的提问来源于stack exchange,提问作者Dal

