Firefox扩展Manifest V3无法读取Cookie问题求助
针对你遇到的Manifest V3扩展在Firefox中调用cookies.getAll返回空数组的问题,可通过以下步骤修复:
1. 调整domain参数的匹配规则
Firefox在Manifest V3下对domain参数的匹配更严格,必须带前缀点(.)才能匹配包含子域名的Cookie,而Chromium允许不带点的写法。修改你的查询参数:
async function Test() { // 给domain添加前缀点 let cookies = await browser.cookies.getAll({ domain: ".twitter.com" }); console.log(cookies); }
2. 修正host_permissions格式
你当前的host_permissions末尾带斜杠可能导致匹配范围受限,修改为覆盖所有路径的写法:
"host_permissions": [ "*://*.twitter.com/*", "*://twitter.com/*" ]
3. 排查权限与执行上下文
- 若代码在popup中执行,确保扩展已正确加载并获得权限(Firefox安装扩展后默认会授予
host_permissions声明的权限)。 - 可先尝试不带过滤参数获取所有Cookie,验证是否能正常读取:
async function Test() { let allCookies = await browser.cookies.getAll(); let twitterCookies = allCookies.filter(c => c.domain.includes("twitter.com")); console.log(twitterCookies); }
补充说明
Firefox对Manifest V3的cookies API实现与Chromium存在细微差异,V3下Firefox保留了V2时期的严格域名匹配逻辑,而Chromium做了兼容优化。以上调整可解决大部分跨浏览器的Cookie读取问题。
内容的提问来源于stack exchange,提问作者user12429279
相关产品推荐
相关产品推荐

