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

Update compatibility data on GitHub
OrdinateurMobile
ChromeEdgeFirefoxOperaFirefox pour Android
Support simpleChrome Aucun support NonEdge Aucun support NonFirefox Support complet 57Opera Aucun support NonFirefox Android Support complet 57
closeChrome Aucun support NonEdge Aucun support NonFirefox Support complet 57Opera Aucun support NonFirefox Android Support complet 57
disconnectChrome Aucun support NonEdge Aucun support NonFirefox Support complet 57Opera Aucun support NonFirefox Android Support complet 57
errorChrome Aucun support NonEdge Aucun support NonFirefox Support complet 57Opera Aucun support NonFirefox Android Support complet 57
ondataChrome Aucun support NonEdge Aucun support NonFirefox Support complet 57Opera Aucun support NonFirefox Android Support complet 57
onerrorChrome Aucun support NonEdge Aucun support NonFirefox Support complet 57Opera Aucun support NonFirefox Android Support complet 57
onstartChrome Aucun support NonEdge Aucun support NonFirefox Support complet 57Opera Aucun support NonFirefox Android Support complet 57
onstopChrome Aucun support NonEdge Aucun support NonFirefox Support complet 57Opera Aucun support NonFirefox Android Support complet 57
resumeChrome Aucun support NonEdge Aucun support NonFirefox Support complet 57Opera Aucun support NonFirefox Android Support complet 57
statusChrome Aucun support NonEdge Aucun support NonFirefox Support complet 57Opera Aucun support NonFirefox Android Support complet 57
suspendChrome Aucun support NonEdge Aucun support NonFirefox Support complet 57Opera Aucun support NonFirefox Android Support complet 57
writeChrome Aucun support NonEdge Aucun support NonFirefox Support complet 57Opera Aucun support NonFirefox Android Support complet 57

Légende

Support complet  
Support complet
Aucun support  
Aucun support

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"]
);

Étiquettes et contributeurs liés au document

Contributeurs à cette page : hellosct1, kernp
Dernière mise à jour par : hellosct1,