我正在尝试为 Firefox 创建一个扩展(插件),它 从扩展的后台脚本创建一个 cookie,然后将其发送到弹出脚本。但由于某种原因,我无法从后台脚本(background.js)创建/保存cookie。 我用同样的方法在 chrome 中做了扩展,它在那里工作。
这是我在插件控制台中执行代码的结果:
>> document.cookie = "cookieKey=cookieValue; expires=Tue, 14 Jul 2021 11:54:29 GMT; path=/";
"cookieKey=cookieValue; expires=Tue, 14 Jul 2021 11:54:29 GMT; path=/"
>> document.cookie
""
我也向 cookie 提供了插件的许可。
这就是我的manifest.json 文件的样子:
{
"manifest_version": 2,
"name": "hello world!!!",
"version": "1.0",
"description": "",
"icons": {
"48": "icons/extension-icon.png"
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"]
}
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"permissions": ["tabs", "cookies", "<all_urls>"],
"browser_action": {
"default_icon": "icons/extension-icon.png",
"default_title": "Hello world!",
"default_popup": "popup/popup.html"
}
}
这是我尝试从background.js 做的事情
dateInt = new Date().getTime() + 24*60*60*1000 //expire after 24 hours
expiry_date = "; expires="+new Date(dateInt).toUTCString()+"; path=/"
document.cookie = "a=" + data.a + expiry_date
document.cookie = "b=" + data.b + expiry_date
document.cookie = "c=" + data.c + expiry_date
document.cookie = "d=" + data.d+ expiry_date
console.log('cookie created: ', document.cookie)
但是这是我在控制台中看到的输出:
cookie created: <empty string>
我很困惑为什么这在 Firefox 中不起作用,而 chrome 中没有这样的问题。
如有任何帮助,我们将不胜感激。
我认为问题是你尝试从后台脚本设置
document.cookie
。 Cookie 属于特定域,因此您无法从后台脚本全局设置它。
您应该更改代码,以便在内容脚本中设置
document.cookie
,或者使用 cookies
网络扩展 API(只能从后台脚本使用,无论如何都不能从内容脚本中使用)。
然后,您在使用 cookies.set({ url: "https://the.url/your/cookie/belongs/to", ... })
设置 cookie 时必须提供 cookie 所属的 URL。