在 WebExtension 的 fetch 中使用浏览器 cookie
Use the browser cookie in fetch in a WebExtension
我目前正在将一个插件从 Jetpack 移植到 WebExtension API。我需要用数据不断更新浏览器操作(工具栏按钮)(例如设置其徽章文本)。
为此,我想从我的扩展中的 background script 向页面的 API 发出请求,当用户登录时可以访问该页面(即 cookie 是放)。到目前为止我做了什么:
我给了自己host permissions,据说这是内容脚本请求所必需的。
然而,content scripts用于将 JS 注入用户访问的页面。
我创建了一个后台脚本,它使用 fetch
向 API 发出请求。
然而,当从后台脚本查询时,API告诉我没有人登录,而我可以用浏览器完美地访问它。
这是manifest.json
的相关部分:
{
"background": {
"scripts": ["background.js"]
},
"permissions": [
"*://subdomain.domain.com/*"
]
}
我怎样才能有一个连续的 运行 后台脚本,可以使用用户的 cookie 来访问这个 API?
您需要在 fetch()
的参数中提供 credentials
选项
https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch
Firefox 对 cookie 有更严格的 cors 限制。我通过在具有相同域的页面上注入的 content-script 进行 api 调用来解决这个问题。该 api 调用生成了一个身份验证令牌,用于从后台页面进行 api 调用,并在后端为包含身份验证令牌的请求启用 cors header.
我目前正在将一个插件从 Jetpack 移植到 WebExtension API。我需要用数据不断更新浏览器操作(工具栏按钮)(例如设置其徽章文本)。
为此,我想从我的扩展中的 background script 向页面的 API 发出请求,当用户登录时可以访问该页面(即 cookie 是放)。到目前为止我做了什么:
我给了自己host permissions,据说这是内容脚本请求所必需的。
然而,content scripts用于将 JS 注入用户访问的页面。
我创建了一个后台脚本,它使用
fetch
向 API 发出请求。
然而,当从后台脚本查询时,API告诉我没有人登录,而我可以用浏览器完美地访问它。
这是manifest.json
的相关部分:
{
"background": {
"scripts": ["background.js"]
},
"permissions": [
"*://subdomain.domain.com/*"
]
}
我怎样才能有一个连续的 运行 后台脚本,可以使用用户的 cookie 来访问这个 API?
您需要在 fetch()
credentials
选项
https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch
Firefox 对 cookie 有更严格的 cors 限制。我通过在具有相同域的页面上注入的 content-script 进行 api 调用来解决这个问题。该 api 调用生成了一个身份验证令牌,用于从后台页面进行 api 调用,并在后端为包含身份验证令牌的请求启用 cors header.