尝试从开发中的Chrome扩展程序中提取一些数据来与我托管的Web服务集成时,我感到不高兴。
我想要的工作流程如下,它与我见过的其他扩展类似(例如,BrowserStack具有此工作流程):
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 。
无论我尝试什么,我似乎都无法获得任何附加标头与请求一起发送到我的服务。我尝试过的变体包括:
credentials: 'include'
fetch()
的{{1}}部分的变体一切都没有成功。
任何人都可以看到我在做什么吗?