在WebExtension中的fetch中使用浏览器cookie

时间:2017-11-29 17:10:49

标签: cookies firefox-webextensions

我目前正在将一个插件从jetpack移植到WebExtension API。我需要不断更新带有数据的浏览器操作(工具栏按钮)(例如设置其徽章文本)。

为此,我想从我的扩展程序中的background script请求页面的API,当用户登录时可以访问(即设置了cookie)。到目前为止我做了什么:

  1. 我给了自己host permissions,这是内容脚本请求所必需的。

    但是,content scripts用于将JS注入用户访问的页面。

  2. 我创建了一个后台脚本,使用fetch向API发出请求。

  3. 但是,当从后台脚本查询时,API告诉我没有人登录,而我可以通过浏览器完美地访问它。

    这是manifest.json

    的相关部分
    {
      "background": {
        "scripts": ["background.js"]
      },
      "permissions": [
        "*://subdomain.domain.com/*"
      ]
    }
    

    如何使用持续运行的后台脚本来使用用户的cookie来访问此API?

2 个答案:

答案 0 :(得分:1)

您需要在credentials

的参数中提供fetch()选项

https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch

答案 1 :(得分:1)

Firefox对cookie具有更严格的cors限制。我通过使用注入到具有相同域的页面上的内容脚本进行api调用来解决此问题。该api调用生成了一个auth令牌,该令牌用于后台页面的api调用,并在后端启用了cors以便在auth标头中包含令牌的请求。