我在Developer's Guide看不到这个问题的答案,但也许我找不到合适的地方。
我想拦截使用Chrome扩展程序的HTTP请求,然后将其转发,可能使用新的/不同的HTTP标头 - 我该怎么做?
答案 0 :(得分:35)
PS:我是此扩展程序的作者,所以你可以责备我任何你不喜欢的事情:)
当OP提出这个问题时肯定不可能,但不久之后Chrome发布了实验WebRequest API。但现在他们已正式加入Chrome扩展程序。您可以在Chrome中使用它修改请求和响应标头。看看这个例子:
chrome.webRequest.onBeforeSendHeaders.addListener(
function(details) {
for (var i = 0; i < details.requestHeaders.length; ++i) {
if (details.requestHeaders[i].name === 'User-Agent') {
details.requestHeaders.splice(i, 1);
break;
}
}
return { requestHeaders: details.requestHeaders };
},
{urls: ['<all_urls>']},
[ 'blocking', 'requestHeaders']
);
如果您想使用Chrome扩展程序,可以使用Requestly,它允许您根据需要修改请求和响应标头。看看这个快照:
答案 1 :(得分:11)
Chrome 17支持修改请求标头(https://developer.chrome.com/extensions/webRequest)。
答案 2 :(得分:4)
您正在查找正确的位置,但拦截HTTP请求尚不存在,但扩展团队知道这是一个受欢迎的请求,并希望在不久的将来某个时间到达它。
答案 3 :(得分:0)
请记住,从chrome 72开始,除非您在extraHeaders
中添加opt_extraInfoSpec
,否则不允许使用某些标头
因此,@ sachinjain024答案中的上述示例将如下所示:
chrome.webRequest.onBeforeSendHeaders.addListener(
function(details) {
for (var i = 0; i < details.requestHeaders.length; ++i) {
if (details.requestHeaders[i].name === 'User-Agent') {
details.requestHeaders.splice(i, 1);
break;
}
}
return { requestHeaders: details.requestHeaders };
},
{urls: ['<all_urls>']},
[ 'blocking', 'requestHeaders', 'extraHeaders']
);
有关更多信息,请查看文档Screenshot from the documentation https://developer.chrome.com/extensions/webRequest#life_cycle_footnote
答案 4 :(得分:0)
您可以安装 ModHeader 扩展并添加标题: