Заголовки изменены в onBeforeSendHeaders не отправляются - PullRequest
1 голос
/ 16 марта 2019

Это относится к Chrome 72+ (работа с обновлениями, введенными с https://www.chromium.org/Home/chromium-security/extension-content-script-fetches)

В фоновом скрипте моего расширения chrome мне нужно установить заголовок Referer. Вот код, который я использую для этого:

var extraInfoSpec = ['blocking', 'requestHeaders'];
if (chrome.webRequest.OnBeforeSendHeadersOptions.hasOwnProperty('EXTRA_HEADERS'))
  extraInfoSpec.push('extraHeaders');

chrome.webRequest.onBeforeSendHeaders.addListener(function(details){
  var newRef = "http://referer.url/page";
  var gotRef = false;
  for(var n in details.requestHeaders){
      gotRef = details.requestHeaders[n].name.toLowerCase()=="referer";
      if(gotRef){
          details.requestHeaders[n].value = newRef;
          break;
      }
  }
  if(!gotRef){
      details.requestHeaders.push({name:"Referer",value:newRef});
  }
  return {requestHeaders:details.requestHeaders};
},{
  urls:["my_test_path_url"]
}, extraInfoSpec);

Когда я выводю содержимое details.requestHeaders перед его возвратом - он показывает массив заголовков, включающий Referer.

Позже background.js я выполняю ajax-вызовmy_test_path_url вот так:

$.ajax({
   type: "GET",
   headers: {"Authorization": `Bearer ${secretToken}`}, 
   url: requestURL,
   dataType: 'json',
   success: ...

Затем я смотрю на сетевую консоль - и вижу, что ни один из extraHeaders не был добавлен в запрос.

Чтобы перепроверитьЯ добавил прослушиватель для onSendHeaders (пробовал различные конфигурации для дополнительных параметров) и никогда не мог наблюдать заголовок Referer, который должен быть указан в requestHeaders.

Вопрос в том, как обеспечить, чтобы Referer передается с запросом? И, возможно, как подтвердить в onSendHeaders, что Referer все еще не поврежден?

-

Запросить заголовки, как показано внутри onBeforeSendHeaders: enter image description here

Запросите заголовки, как показано в Инспекторе сетей:enter image description here

1 Ответ

0 голосов
/ 16 мая 2019

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

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

Итак, вы можете использовать:

var extraInfoSpec = ['blocking', 'requestHeaders', 'extraHeaders'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...