【问题标题】:Can I modify outgoing request headers with a Chrome Extension?我可以使用 Chrome 扩展修改传出请求标头吗?
【发布时间】:2011-03-17 11:49:02
【问题描述】:

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

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

【问题讨论】:

标签: google-chrome google-chrome-extension


【解决方案1】:

您可以安装ModHeader 扩展并添加标题:

【讨论】:

  • 如何使用此扩展删除标题?
  • 您可以删除仅由您添加的标题。
【解决方案2】:

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' /* , 'extraHeaders' */]
  // uncomment 'extraHeaders' above in case of special headers since Chrome 72
  // see https://developer.chrome.com/extensions/webRequest#life_cycle_footnote
);

如果您想使用 Chrome 扩展程序,可以使用Requestly,它允许您根据需要修改请求和响应标头。看看这个快照:

【讨论】:

  • 我会降低 ADVERTISEMENT 的音量。 1)你应该明确地公开它是你自己的创作,2)也许一个巨大的截图不合适。
  • @Xan 我添加了 PPS 说“我是作者”。你是对的,我应该首先这样做。快照可能/可能不会不合适,我会在这里。如果您强烈认为它不应该存在,请将其删除。我很好。感谢您的输入。我很感激
  • 感谢 blunderboy,别担心 - 您的图像非常好。您作为作者已经从存储库链接中不言而喻,并且鉴于您首先确定了 API 并展示了示例代码(更不用说它是一个开源项目),将其作为“广告”大惊小怪是相当愚蠢的要做的事情。
  • 我很高兴 - 使用 Requestly,我在 2 分钟内完成了我的小测试,而使用 API 编码需要 20 分钟以上。
  • +1 - 使用它来调试 ajax,设置为 Modify Headers -> Add -> Request -> "X-Requested-With" -> "XMLHttpRequest"
【解决方案3】:

请记住,从 chrome 72 开始,某些标头是不允许的,除非您在 opt_extraInfoSpec 中添加 extraHeaders 因此,@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 documentationhttps://developer.chrome.com/extensions/webRequest#life_cycle_footnote

【讨论】:

    【解决方案4】:

    chrome 17 支持修改请求标头 (https://developer.chrome.com/extensions/webRequest)。

    【讨论】:

      【解决方案5】:

      您正在寻找正确的地方,但拦截 HTTP 请求尚不存在,但扩展团队知道这是一个受欢迎的请求,并希望在不久的将来某个时候得到它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-18
        • 2021-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-23
        • 2012-11-19
        • 1970-01-01
        相关资源
        最近更新 更多