google-chrome - 无法在 Chrome 扩展程序(Chrome 72+)中设置引用(或 Cookie)标头
问题描述
在 Chrome 72+ 中,设置任何标题都有效:
chrome.webRequest.onBeforeSendHeaders.addListener(function(details){
details.requestHeaders.push({name:"Anything", value:"https://google.com"});
// ...
但是设置Referer不会:
chrome.webRequest.onBeforeSendHeaders.addListener(function(details){
details.requestHeaders.push({name:"Referer", value:"https://google.com"});
// ...
解决方案
从 Chrome 72 开始,根据这篇文章,如果您正在修改 Accept-Language、Accept-Encoding、Cookie 或 Referer,则必须添加extraHeaders
到extraInfoSpec
数组中。要向后兼容(Chrome 71 及更低版本),请检查属性EXTRA_HEADERS
.
var extraInfoSpec = ['blocking', 'requestHeaders'];
if (chrome.webRequest.OnBeforeSendHeadersOptions.hasOwnProperty('EXTRA_HEADERS')) extraInfoSpec.push('extraHeaders');
chrome.webRequest.onBeforeSendHeaders.addListener(function(details){
// ...
}, {
urls:[urls]
}, extraInfoSpec);