我有以下 Firefox 扩展。我想从浏览器获取cookie。但是当我单击扩展中的“全部”时,
console.log(await (browser.cookies.getAll({}))
仅打印零长度的数组。我尝试与以下包进行比较,但我看不出导致问题的差异是什么。我怎样才能找出导致问题的原因?
https://github.com/hrdl-github/cookies-txt
==> 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();
});
我不确定您是否仍然遇到问题,但扩展程序需要您想要获取其 cookie 的选项卡或 URL 的权限。
tabs
允许从打开的选项卡获取 cookie(在默认存储中)。 *://*/*
或 <all_urls>
允许获取所有 cookie(在默认存储中),即使对于不在打开的选项卡中的源也是如此。
...
"permissions": [
"downloads",
"cookies",
"*://*/*"
],
...
既然我上面提到过,
storeId
参数的可选属性details
是
firefox-default
(或无)用于普通窗口中的cookie(没有身份)firefox-private
用于私人窗口中的 cookiefirefox-container-N
,其中 N
是一个数字,用于上下文身份您一次只能购买一家商店。