首页 >web前端 >js教程 >如何在 Chrome 扩展程序中访问 HTTP 响应正文?

如何在 Chrome 扩展程序中访问 HTTP 响应正文?

Patricia Arquette
Patricia Arquette原创
2024-10-25 09:21:02808浏览

How Can You Access HTTP Response Bodies in Chrome Extensions?

如何在 Chrome 扩展程序中破译 HTTP 响应主体

在浏览器开发中,访问 HTTP 响应主体可能会带来挑战,特别是在Chrome 扩展程序后台脚本。虽然可以使用“chrome.webRequest.onBeforeRequest”事件访问 HTTP 请求正文,但检索响应正文需要更复杂的方法。

一个潜在的解决方案,如引用的 Stack Overflow 线程“Chrome”中所述读取 HTTP 响应的扩展”涉及利用“chrome.devtools.network”API。通过将调试器附加到当前选项卡并在调试器中启用网络,就可以侦听“Network.responseReceived”事件。触发此事件时,您可以使用“chrome.debugger.sendCommand”方法检索特定请求 ID 的响应正文。

以下是演示此方法的示例代码片段:

<code class="javascript">var currentTab;
var version = "1.0";

chrome.tabs.query(
  {
    currentWindow: true,
    active: true
  },
  function(tabArray) {
    currentTab = tabArray[0];
    chrome.debugger.attach({
      tabId: currentTab.id
    }, version, onAttach.bind(null, currentTab.id));
  }
);

function onAttach(tabId) {
  chrome.debugger.sendCommand({
    tabId: tabId
  }, "Network.enable");

  chrome.debugger.onEvent.addListener(allEventHandler);
}

function allEventHandler(debuggeeId, message, params) {
  if (currentTab.id != debuggeeId.tabId) {
    return;
  }

  if (message == "Network.responseReceived") {
    chrome.debugger.sendCommand({
      tabId: debuggeeId.tabId
    }, "Network.getResponseBody", {
      "requestId": params.requestId
    }, function(response) {
      // You get the response body here!
      // You can close the debugger tips by:
      chrome.debugger.detach(debuggeeId);
    });
  }
}</code>

此方法相当全面,提供对响应标头和响应正文本身的访问。但是,它确实涉及创建调试器会话并将其附加到当前选项卡,这可能会引入额外的复杂性或性能考虑因素。

以上是如何在 Chrome 扩展程序中访问 HTTP 响应正文?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn