ホームページ >ウェブフロントエンド >jsチュートリアル >Chrome 拡張機能で HTTP レスポンスボディにアクセスするにはどうすればよいですか?

Chrome 拡張機能で HTTP レスポンスボディにアクセスするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-25 09:21:02818ブラウズ

How Can You Access HTTP Response Bodies in Chrome Extensions?

Chrome 拡張機能で HTTP レスポンスボディを解読する方法

ブラウザ開発では、HTTP レスポンスボディへのアクセスは、特に内部で作業する場合に課題となる可能性があります。 Chrome 拡張機能のバックグラウンド スクリプト。 「chrome.webRequest.onBeforeRequest」イベントを使用して HTTP リクエスト本文にアクセスすることは可能ですが、レスポンス本文を取得するには、より複雑なアプローチが必要です。

参照されているスタック オーバーフロー スレッド「Chrome」で説明されている、考えられる解決策の 1 つ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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。