Расширение Chrome - объект requestHeaders не имеет заголовка cookie - PullRequest
0 голосов
/ 06 ноября 2018

Мы написали Chrome-расширение, которое, используя событие onBeforeSendHeaders, добавляет cookie в каждый веб-запрос:

chrome.webRequest.onBeforeSendHeaders.addListener(addCookie, {
    urls: ["<all_urls>"]
}, ["blocking", "requestHeaders"]);

function addCookie(details) {
    if (details.url.match(/ourWebsite/)) {
        details.requestHeaders.forEach(function (requestHeader) {
            if (requestHeader.name.toLowerCase() === "cookie") {
                //Code that adds a cookie with a value
            }
        });
        return {requestHeaders: details.requestHeaders};
    }
}

Отлично работает на всех Chrome, но на моем. При отладке расширения я заметил, что массив details.requestHeaders не имеет заголовка cookie (это всегда ложь: requestHeader.name.toLowerCase() === "cookie").

Моей первой мыслью было, что другое расширение портит наше, поэтому я попытался в режиме инкогнито (где другие расширения не разрешены), но это не сработало.

В манифесте расширения у нас есть и "cookies", и "webRequest" в permissions.

Есть идеи? Заранее спасибо!

1 Ответ

0 голосов
/ 31 января 2019

Согласно этому https://developer.chrome.com/extensions/webRequest

Начиная с Chrome 72, следующие заголовки запроса не предоставляются и не могут быть изменены или удалены без указания extraHeaders в opt_extraInfoSpec:

  • Accept-Language
  • Accept-Encoding
  • Referer
  • Cookie

Таким образом, вы должны добавить «extraHeaders» к третьему параметру chrome.webRequest.onBeforeSendHeaders.addListener, и это должно быть ["blocking", "requestHeaders", "extraHeaders"] для вашего примера.

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