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

Firefox扩展调用browser.cookies.getAll()返回空数组排查咨询

Firefox扩展获取Cookies返回空数组的排查方案

我开发了如下Firefox扩展,想要获取浏览器中的Cookies。但点击扩展中的“All”按钮时,console.log(await browser.cookies.getAll({}))仅打印长度为0的数组。对比过类似项目但未发现问题差异,请问该如何排查?

manifest.json

{
  "manifest_version": 2,
  "name": "DefaultPopup",
  "version": "1.0",
  "permissions": [
    "downloads"
    , "cookies"
  ],
  "browser_action": {
    "default_popup": "popup/choose_option.html"
  },
  "background": {
    "scripts": ["background.js"]
  },
  "content_scripts": [
    {
      "matches": ["*://*/*"],
      "js": ["runtime.js"]
    }
  ]
}

background.js

browser.runtime.onInstalled.addListener(function(details) {
  console.log('onInstalled');
  console.log(details);
});

browser.runtime.onMessage.addListener(async function(details) {
  console.log('onMessage');
  console.log(details);
  console.log(
    await browser.cookies.getAll({})
  );
});

runtime.js

console.log(browser)
/*
console.log(browser.downloads)
console.log(browser.runtime)
console.log(browser.runtime.id)
*/

popup/choose_option.html

<!DOCTYPE html>
<html>
  <body>
    <button class="all">All </button>
    <script src="choose_option.js"></script>
  </body>
</html>

popup/choose_option.js

document.querySelector(".all").addEventListener("click", () => {
  console.log('click')
  browser.runtime.sendMessage("my message");
  window.close();
});

排查步骤:

  • 补全权限范围:Manifest V2中,cookies权限需要搭配主机权限才能获取对应站点的Cookie。修改permissions数组,添加<all_urls>以获取所有站点的Cookie:

    "permissions": [
      "downloads",
      "cookies",
      "<all_urls>"
    ]
    

    无主机权限时,cookies.getAll()无法返回任何Cookie,这是最常见的原因。

  • 验证消息接收与上下文:确认后台脚本正确接收了popup发送的消息——检查后台控制台是否打印了onMessage和my message。确保cookies.getAll()是在后台脚本中执行,而非popup或content script(你当前的代码是正确的,但需确认执行上下文)。

  • 针对性测试Cookie获取:尝试指定一个明确有Cookie的站点进行测试,比如:

    await browser.cookies.getAll({url: "https://www.example.com"})
    

    如果能返回该站点的Cookie,说明是权限范围问题;如果仍然为空,再排查浏览器设置。

  • 检查浏览器隐私配置:

    • 确保扩展在非隐私窗口中运行,隐私窗口的Cookie是隔离的,默认扩展无法访问。
    • 检查浏览器是否开启了“退出时清除Cookie”或类似隐私设置,这类设置会导致无持久Cookie可获取。
  • 确认API兼容性:虽然Firefox支持Manifest V2,但部分API行为可能因版本变化调整。可以查看当前Firefox版本对browser.cookies.getAll的支持文档,确认无参数调用的预期行为。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:27:35