Я не испытываю радости от попытки fetch()
некоторых данных из расширения Chrome, которое я разрабатываю, предназначенного для интеграции с веб-службой, которую я размещаю.
Рабочий процесс, к которому я стремлюсь, заключается в следующем, который похож на другие расширения, которые я видел (например, BrowserStack имеет этот рабочий процесс):
- Посещение https://{mysite.tld}, аутентифицируется с помощью веб-формы и имеет назначенный файл cookie сеанса.
- Расширение прослушивает изменения cookie, видит изменение из {mysite.tld} и периодически
fetch()
выводит некоторые данные из моего сервиса для отображения в виде значка / всплывающего окна.
My 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()
, однако он возвращает 401 из моего сервиса, поскольку вместе с запросом данные cookie не отправляются, несмотря на настройку credentials: 'include'
.
Независимо от того, что я пытаюсь, я не могу получить любые дополнительных заголовков для отправки вместе с запросом на мой сервис.Варианты, которые я пытался включить, включают:
- добавление сведений о файлах cookie вручную в заголовки
- с использованием XHR для выполнения запроса, а не
fetch()
- настройкафайл cookie, который отправляется обратно из службы, чтобы сделать его менее ограничивающим
- вариациями для
permissions
раздела manifest.js
Все без какого-либо успеха.
Кто-нибудь может увидеть, что я делаю не так?