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

Chrome 拡張機能で HTTP 応答本文にアクセスするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-24 17:35:48675ブラウズ

How to Access the HTTP Response Body in Chrome Extensions?

Chrome 拡張機能で HTTP 応答本文を取得する方法

Chrome 拡張機能内で HTTP 応答本文を取得するのは難しい場合があります。 Chrome などのブラウザには、セキュリティ上の懸念から拡張機能が応答本文を直接読み取ることを防ぐ厳格なポリシーがあります。ただし、このデータにアクセスするために使用できる間接的な方法もあります。

Chrome のデバッグ プロトコルの使用

1 つの方法は、Chrome のデバッグ プロトコルを利用することです。このプロトコルを使用すると、拡張機能をアクティブなタブに接続し、ネットワーク アクティビティを監視できます。 「Network」ド​​メインを有効にして「Network.responseReceived」イベントをリッスンすることにより、拡張機能は応答ヘッダーを検査し、応答本文を取得する別のコマンドをトリガーできます。

var debuggeeId = null;

chrome.tabs.query({currentWindow: true, active: true}, function(tabArray) {});
chrome.debugger.attach({tabId: currentTab.id}, "1.0", onAttach);

function onAttach(tabId, response) {
    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) {
                // Response body is now accessible in "response.body"
                chrome.debugger.detach(debuggeeId);
            });
    }
}

このメソッドは、次の堅牢な方法を提供します。応答本文を取得しますが、デバッガー インターフェイスを有効にする必要があるため、パフォーマンスとユーザー エクスペリエンスに影響を与える可能性があります。

制限事項とベスト プラクティス

特定の型では次の点に注意することが重要です。の HTTP リクエストが「Network.responseReceived」イベントをトリガーしない可能性があります。このような場合、コンテンツ スクリプトを使用するか、送信前にリクエストを変更するなどの代替ソリューションを検討できます。

応答本文で機密データを扱う場合は、暗号化またはその他のセキュリティ手段を使用して不正アクセスから保護することを検討してください。 。これらのログは侵害される可能性があるため、機密情報を含む応答本文をログに記録しないでください。

以上がChrome 拡張機能で HTTP 応答本文にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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