Heim  >  Artikel  >  Web-Frontend  >  So rufen Sie den HTTP-Antworttext in Chrome-Erweiterungen ab: Ist das möglich?

So rufen Sie den HTTP-Antworttext in Chrome-Erweiterungen ab: Ist das möglich?

Susan Sarandon
Susan SarandonOriginal
2024-10-24 18:38:35230Durchsuche

How to Retrieve HTTP Response Body in Chrome Extensions:  Is it Possible?

So rufen Sie den HTTP-Antworttext in Chrome-Erweiterungen ab

Das Abrufen des HTTP-Antworttexts innerhalb eines Hintergrundskripts einer Chrome-Erweiterung stellt eine Herausforderung dar. Während die Erweiterung über chrome.webRequest.onBeforeRequest auf den Anforderungstext zugreifen kann, ist es normalerweise nicht möglich, den Antworttext abzurufen.

Um diese Einschränkung zu überwinden, besteht ein kreativer Ansatz darin, die chrome.debugger-API zu nutzen. Diese API ermöglicht Erweiterungen das Debuggen und die Interaktion mit der Netzwerkaktivität des Browsers. Hier ist eine detaillierte Implementierung:

  1. Stellen Sie mithilfe von chrome.tabs.query und chrome.debugger.attach eine Verbindung zum aktuellen Tab her.
  2. Aktivieren Sie das Netzwerk-Debugging, indem Sie den Befehl Network.enable senden zur Registerkarte.
  3. Registrieren Sie einen Ereignis-Listener für Network.responseReceived-Ereignisse.
  4. Wenn eine Antwort empfangen wird, senden Sie den Befehl Network.getResponseBody und geben Sie dabei die requestId aus den Ereignisparametern an.
  5. Der Antworttext wird vom Befehl zurückgegeben, sodass Sie ihn nach Bedarf verarbeiten können.
<code class="javascript">// Attach to the current tab and enable network debugging.
chrome.tabs.query({ currentWindow: true, active: true }, tabs => {
  chrome.debugger.attach({ tabId: tabs[0].id }, '1.0', debuggeeId => {
    chrome.debugger.sendCommand({ tabId: debuggeeId.tabId }, 'Network.enable');
  });
});

// Listen for response received events.
chrome.debugger.onEvent.addListener((debuggeeId, message, params) => {
  if (debuggeeId.tabId !== currentTab.id) return;
  if (message === 'Network.responseReceived') {
    // Get the response body by sending a command.
    chrome.debugger.sendCommand({ tabId: debuggeeId.tabId }, 'Network.getResponseBody', { requestId: params.requestId }, response => {
      // The response body is now available.
      // ... Process the response body ...
    });
  }
});</code>

Mit dieser Methode können Sie den HTTP-Antworttext abrufen, ohne dass zusätzliche Browserseiten oder erforderlich sind Dienstleistungen Dritter. Beachten Sie, dass Sie die Debugsitzung mit chrome.debugger.detach schließen können, wenn Sie fertig sind.

Das obige ist der detaillierte Inhalt vonSo rufen Sie den HTTP-Antworttext in Chrome-Erweiterungen ab: Ist das möglich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn