我一直在尝试使用
browser.cookies.getAll()
列出我的扩展程序中的所有浏览器 cookie。起初,我以为是权限问题,但我的权限似乎设置正确。这是我的代码:
manifest.json
{
"manifest_version": 2,
"name": "CookieExample",
"version": "0.1",
"applications": {
"gecko": {
"id": "[email protected]"
}
},
"permissions": [
"cookies",
"webNavigation",
"webRequest",
"webRequestBlocking",
"<all_urls>"
],
"background": {
"scripts": ["cookies.js"]
}
}
cookies.js
browser.cookies.getAll({}, function(cookies) {
console.log(cookies);
});
控制台只是将
[]
记录为返回值。不知道是哪里出了问题,还是浏览器的问题。 Cookie Manager 工作得很好,可以顺利列出所有浏览器 cookie。查看其源代码,唯一的区别是它使用 cookie 存储 ID 来查询 cookie,而我什么也没使用。
您可以使用
browser.cookies.getAllCookieStores
获取所有商店,将它们与您想要 cookie 的选项卡的 id 进行匹配(商店知道 tabIds
属性中的所有选项卡),然后将 storeId
传递给 browser.cookies.getAll
.
来自 mozilla 文档
function logCookies(cookies) {
for (let cookie of cookies) {
console.log(cookie.value);
}
}
var gettingAll = browser.cookies.getAll();
gettingAll.then(logCookies);
browser.cookies.getAll() 总是不返回任何内容
有一些 javascript 函数(方法)与 safari 和 firefox 不兼容。
其中之一是 cookieStore.getAll()
为了使用它们,我们可以使用
const allCookies = document.cookie.split(';');