use*_*821 2 google-chrome google-chrome-extension
我正在尝试使用我的 Chrome 扩展程序修改 referer-policy 标头,但它不会影响响应标头。
清单.json:
{
"name": "My Example Extension",
"version": "1.0",
"description": "",
"permissions": [
"webRequest",
"webRequestBlocking",
"*://*/*"
],
"background": {
"scripts": ["background.js"],
"persistent": true
},
"manifest_version": 2
}
Run Code Online (Sandbox Code Playgroud)
背景.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']);
Run Code Online (Sandbox Code Playgroud)
我添加了调试输出,显示代码相应地修改或添加了标题,但对浏览器本身没有影响。
在尝试修改扩展中的响应标头时,我正在编写完全相同的代码。
// manifest.json
"permissions": [
"webRequest", "webRequestBlocking", "https://developer.chrome.com/*"
]
// background.js
chrome.webRequest.onHeadersReceived.addListener(
function(details) {
const newHeader = {name:"foo", value:"bar"};
const responseHeaders = details.responseHeaders.concat(newHeader);
return { responseHeaders };
},
// filters
{
urls: ["https://developer.chrome.com/*"],
},
// extraInfoSpec
["blocking","responseHeaders"]
);
Run Code Online (Sandbox Code Playgroud)
它根本不起作用。
直到我将最后一个参数更改为:
// extraInfoSpec
["blocking","responseHeaders", "extraHeaders"]
Run Code Online (Sandbox Code Playgroud)
它终于起作用了。
通过重新访问文档,在请求生命周期部分的最后一段中:
从 Chrome 79 开始,...另一方面,响应标头修改无法欺骗 CORS 检查。如果需要欺骗CORS协议,还需要
extraHeaders为响应修改指定' '。
| 归档时间: |
|
| 查看次数: |
2340 次 |
| 最近记录: |