我可以使用Chrome扩展程序修改外发请求标头吗?

时间:2010-07-18 02:57:00

标签: google-chrome google-chrome-extension

我在Developer's Guide看不到这个问题的答案,但也许我找不到合适的地方。

我想拦截使用Chrome扩展程序的HTTP请求,然后将其转发,可能使用新的/不同的HTTP标头 - 我该怎么做?

5 个答案:

答案 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,它允许您根据需要修改请求和响应标头。看看这个快照:

  

Headers Rule

答案 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 扩展并添加标题:

enter image description here