Maison > interface Web > js tutoriel > Comment accéder aux corps de réponse HTTP dans les extensions Chrome ?

Comment accéder aux corps de réponse HTTP dans les extensions Chrome ?

Patricia Arquette
Libérer: 2024-10-25 09:21:02
original
818 Les gens l'ont consulté

How Can You Access HTTP Response Bodies in Chrome Extensions?

Comment déchiffrer les corps de réponse HTTP dans les extensions Chrome

Dans le développement de navigateurs, l'accès aux corps de réponse HTTP peut poser un défi, en particulier lorsque vous travaillez dans Scripts d'arrière-plan de l'extension Chrome. Bien qu'il soit possible d'accéder au corps de la requête HTTP à l'aide de l'événement « chrome.webRequest.onBeforeRequest », la récupération du corps de la réponse nécessite une approche plus complexe.

Une solution potentielle, comme mentionné dans le fil de discussion Stack Overflow référencé « Chrome pour lire la réponse HTTP", implique l'utilisation de l'API "chrome.devtools.network". En attachant un débogueur à l'onglet actuel et en activant le réseau dans le débogueur, il devient possible d'écouter l'événement « Network.responseReceived ». Lorsque cet événement est déclenché, vous pouvez utiliser la méthode « chrome.debugger.sendCommand » pour récupérer le corps de la réponse pour un ID de requête spécifique.

Voici un exemple d'extrait illustrant cette approche :

<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>
Copier après la connexion

Cette méthode est assez complète, offrant un accès à la fois aux en-têtes de réponse et au corps de la réponse lui-même. Cependant, cela implique de créer une session de débogueur et de l'attacher à l'onglet actuel, ce qui peut introduire des problèmes de complexité ou de performances supplémentaires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal