无法在firefox插件中使用document.cookie设置cookie

问题描述 投票:0回答:1

我正在尝试为 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 中没有这样的问题。

如有任何帮助,我们将不胜感激。

javascript cookies firefox-addon
1个回答
0
投票

我认为问题是你尝试从后台脚本设置

document.cookie
。 Cookie 属于特定域,因此您无法从后台脚本全局设置它。

您应该更改代码,以便在内容脚本中设置

document.cookie
,或者使用
cookies
网络扩展 API(只能从后台脚本使用,无论如何都不能从内容脚本中使用)。 然后,您在使用
cookies.set({ url: "https://the.url/your/cookie/belongs/to", ... })
设置 cookie 时必须提供 cookie 所属的 URL。

© www.soinside.com 2019 - 2024. All rights reserved.