webRequest.StreamFilter

Un StreamFilter est un objet que vous pouvez utiliser pour surveiller et modifier les réponses HTTP.

Pour créer un StreamFilter, appelez webRequest.filterResponseData(), en lui passant l'ID de la requête web que vous voulez filtrer.

Vous pouvez imaginer le filtre de flux entre la pile r√©seau et le moteur de rendu du navigateur. Le filtre passe les donn√©es de r√©ponse HTTP au fur et √† mesure qu'il est re√ßu du r√©seau, et peut examiner et modifier les donn√©es avant de les transmettre au moteur de rendu, o√Ļ elles seront analys√©es et rendues.

Le filtre génère quatre événements différents :

  • onstart lorsque le filtre est sur le point de commencer √† recevoir les donn√©es de r√©ponse.
  • ondata lorsque des donn√©es de r√©ponse ont √©t√© re√ßues par le filtre et sont disponibles pour √™tre examin√©es ou modifi√©es.
  • onstop lorsque le filtre a fini de recevoir les donn√©es de r√©ponse.
  • onerror si une erreur s'est produite lors de l'initialisation et de l'utilisation du filtre.

Vous pouvez écouter chaque événement en assignant une fonction d'écoute à son attribut :

filter.onstart = event => {
  console.log("started");
}

Notez que la demande est bloquée pendant l'exécution de n'importe quel auditeur d'événement.

Le filtre fournit une fonction write(). A tout moment à partir de l'événement onstart, vous pouvez utiliser cette fonction pour écrire des données dans le flux de sortie.

Si vous assignez des auditeurs à l'un des événements du filtre, alors toutes les données de réponse transmises au moteur de rendu seront fournies par les appels que vous faites pour write(): donc si vous ajoutez un auditeur mais n'appelez pas write(), alors la page rendue sera vide.

Une fois que vous avez terminé d'interagir avec la réponse, vous appelez l'un ou l'autre des éléments suivants :

  • disconnect() : Cela d√©connecte le filtre de la requ√™te, de sorte que le reste de la r√©ponse est trait√© normalement.
  • close(): Cela met fin √† la demande, de sorte qu'aucune donn√©e de r√©ponse suppl√©mentaire ne sera trait√©e.

Le filtre fournit également des fonctions à suspend() et resume() la requête.

Méthodes

webRequest.StreamFilter.close()
Ferme la demande.
webRequest.StreamFilter.disconnect()
Déconnecte le filtre de la requête.
webRequest.StreamFilter.resume()
Reprend le traitement de la demande.
webRequest.StreamFilter.suspend()
Suspend le traitement de la demande.
webRequest.StreamFilter.write()
√Čcrit quelques donn√©es dans le flux de sortie.

Propriétés

webRequest.StreamFilter.ondata
Gestionnaire d'événements qui est appelé lorsque les données entrantes sont disponibles.
webRequest.StreamFilter.onerror
Gestionnaire d'événements qui est appelé lorsqu'une erreur s'est produite.
webRequest.StreamFilter.onstart
Gestionnaire d'événements qui est appelé lorsque le flux est sur le point de commencer à recevoir des données.
webRequest.StreamFilter.onstop
Gestionnaire d'événements qui est appelé lorsque le flux n'a plus de données à livrer et qu'il s'est fermé.
webRequest.StreamFilter.error
Quand webRequest.StreamFilter.onerror est appelé, cela décrira l'erreur.
webRequest.StreamFilter.status
Décrit l'état actuel du flux.

Compatibilité du navigateur

BCD tables only load in the browser

Exemples

Ce code écoute pour onstart, ondata et onstop. Il enregistre simplement ces événements et les données de réponse elles-mêmes :

function listener(details) {
  let filter = browser.webRequest.filterResponseData(details.requestId);

  filter.onstart = event => {
    console.log("started");
  }

  filter.ondata = event => {
    console.log(event.data);
    filter.write(event.data);
  }

  filter.onstop = event => {
    console.log("finished");
    filter.disconnect();
  }

  //return {}; // not needed
}

browser.webRequest.onBeforeRequest.addListener(
  listener,
  {urls: ["https://example.org/"], types: ["main_frame"]},
  ["blocking"]
);