这与Chrome 72+有关(解决https://www.chromium.org/Home/chromium-security/extension-content-script-fetches引入的更新)
在chrome扩展程序的后台脚本中,我需要设置Referer标头。那就是我使用的代码:
[<div class="parent">
<p class="example"> TRUE </p>
</div>, <div class="parent">
<p class="example"> TRUE </p>
</div>]
当我在返回之前输出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
仍完好无损?
-
答案 0 :(得分:0)
从Chrome 72开始,未提供以下请求标头,并且如果未在opt_extraInfoSpec中指定'extraHeaders',则无法修改或删除以下请求标头:
因此,您可以使用:
var extraInfoSpec = ['blocking', 'requestHeaders', 'extraHeaders'];