Расширение Google Chrome: невозможно повторно использовать активный сеанс веб-сайта, используя fetch () из background.js - PullRequest
0 голосов
/ 08 марта 2019

Я не испытываю радости от попытки 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

Все без какого-либо успеха.

Кто-нибудь может увидеть, что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...