Google Chrome浏览器扩展程序:无法使用background.js中的fetch()重用活动的网站会话

时间:2019-03-08 07:26:58

标签: google-chrome-extension fetch

尝试从开发中的Chrome扩展程序中提取一些数据来与我托管的Web服务集成时,我感到不高兴。

我想要的工作流程如下,它与我见过的其他扩展类似(例如,BrowserStack具有此工作流程):

  • 访问https:// {mysite.tld},使用Web表单进行身份验证并分配会话cookie。
  • 该扩展程序侦听cookie更改,从{mysite.tld}查看更改,并定期fetch()从我的服务中收集一些数据以显示在徽章/弹出窗口中。

我的fetch()设置得很宽松:

manifest.js

当前{ "manifest_version": 2, ... "background": { "persistent": false, "scripts": [ "js/background.js" ] }, "externally_connectable": { "matches": [ "https://mysite.tld/*" ] }, "permissions": [ "cookies", "http://*/*", "https://*/*", "<all_urls>" ] } 很简单,证明了工作流程:

background.js

... chrome.cookies.onChanged.addListener(function(info) { if(info.cookie.domain.indexOf("mysite.tld") === -1) { return; } fetch("https://mysite.tld/api/data", {credentials: 'include'}) .then((resp) => resp.json()) // Transform the data into json .then(function(data){ console.log("fetch response", data); }) .catch(function(resp){ console.log("fetch failed", resp); }); }); ... 检查器中,我可以看到background.js已发出,但是尽管设置了fetch(),但由于未随请求一起发送Cookie数据,因此它从我的服务返回了401 。

无论我尝试什么,我似乎都无法获得任何附加标头与请求一起发送到我的服务。我尝试过的变体包括:

  • 将Cookie详细信息手动添加到标题中
  • 使用XHR发出请求,而不是credentials: 'include'
  • 调整从服务发送回的cookie,以减少限制
  • fetch()的{​​{1}}部分的变体

一切都没有成功。

任何人都可以看到我在做什么吗?

0 个答案:

没有答案