我尝试用我的Chrome扩展修改referer-policy标头,但它不影响响应标头。Manifest.json:
{
"name": "My Example Extension",
"version": "1.0",
"description": "",
"permissions": [
"webRequest",
"webRequestBlocking",
"*://*/*"
],
"background": {
"scripts": ["background.js"],
"persistent": true
},
"manifest_version": 2
}
background.js:
chrome.webRequest.onHeadersReceived.addListener(details => {
let header = details.responseHeaders.find(e => e.name.toLowerCase() === 'referrer-policy');
// Check if the header has been defined already
if (typeof header !== 'undefined') {
console.log ('Modifying header');
header.value = 'strict-origin';
}
else {
details.responseHeaders.push({ name: 'referrer-policy', value: 'strict-origin' });
}
return {responseHeaders: details.responseHeaders};
}, {urls: ["*://*/*"]}, ['blocking', 'responseHeaders']);
我添加了调试输出,显示代码相应地修改或添加了头,但在浏览器本身没有影响。
2条答案
按热度按时间qpgpyjmq1#
当我试图修改扩展中的响应头时,我正在编写完全相同的代码。
完全不管用。
直到我把最后一个参数改成:
终于成功了
通过重新访问该文档,在请求生命周期部分的最后几段中:
从Chrome 79开始,...另一方面,响应头修改无法欺骗CORS检查。如果您需要欺骗CORS协议,则还需要为响应修改指定'
extraHeaders
'。chhkpiq42#
您没有返回修改后的标头。请尝试:
或者使用从文档中复制的稍微修改的代码: