Это относится к 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
: 
Запросите заголовки, как показано в Инспекторе сетей: