proxy.onRequest
Déclenché lorsqu'une requête Web est sur le point d'être effectuée, pour donner à l'extension la possibilité de l'utiliser comme proxy.
Cet événement est étroitement modélisé sur les événements définis dans l'API webRequest
Comme ces événements, sa fonction addListener()
prend trois arguments :
- l'écouteur qui sera appelé lorsque l'événement est déclenché.
- Un objet
RequestFilter
contrôlant quelles requêtes provoquent le déclenchement de l'événement. - un tableau de chaînes pour contrôler d'autres aspects du comportement de l'événement.
L'événement est déclenché avant l'un des événements webRequest
pour la même demande.
Lorsque l'événement est déclenché, l'écouteur est appelé avec un objet contenant des informations sur la requête. L'écouteur renvoie un objet proxy.ProxyInfo
représentant un proxy à utiliser (ou un tableau de tels objets, permettant au navigateur de basculer si un proxy est inaccessible).
Pour utiliser proxy.onRequest
, une extension doit avoir la permission API "proxy" , ainsi que la permission d'hôte pour les URL des requêtes qu'elle intercepte - ela signifie essentiellement que les modèles de correspondance de l'argument filter
doivent être un sous-ensemble de l'extension autorisations de l'hôte.
Syntaxe
browser.proxy.onRequest.addListener(
listener, // function
filter, // object
extraInfoSpec, // optional array of strings
);
browser.proxy.onRequest.removeListener(listener);
browser.proxy.onRequest.hasListener(listener);
Les événements ont trois fonctions :
addListener(listener, filter, extraInfoSpec)
-
Ajoute un écouteur à cet événement.
removeListener(listener)
-
Arrêtez d'écouter cet événement. L'argument
listener
est l'écouteur à supprimer. hasListener(listener)
-
Vérifiez si
listener
est enregistré pour cet événement. Renvoietrue
s'il écoute, sinonfalse
.
Syntaxe addListener
Paramètres
listener
-
Fonction qui sera appelée lorsque cet événement se produit. La fonction passera un seul argument, qui est un objet
proxy.RequestDetails
contenant les détails de la requête.L'écouteur peut renvoyer l'un des éléments suivants:
- un objet
proxy.ProxyInfo
- un tableau d'objets
proxy.ProxyInfo
- Une
Promise
qui se résout en un objetProxyInfo
- Une
Promise
qui résout en un tableau d'objetsProxyInfo
.
Si l'écouteur renvoie un tableau, ou une Promesse qui se résout en un tableau, alors tous les objets
ProxyInfo
après le premier représentent les basculements: si le proxy à la position N dans le tableau n'est pas accessible quand sonProxyInfo.failoverTimeout
alors le navigateur essayez le proxy à la position N+1.S'il y a une erreur spécifiant les objets
proxy.ProxyInfo
objects, alorsproxy.onError
sera appelé. - un objet
filter
-
webRequest.RequestFilter
. Un ensemble de filtres qui limite les événements qui seront envoyés à cet écouteur. extraInfoSpec
Facultatif-
array
destring
. Options supplémentaires pour l'événement. Vous pouvez passer une seule valeur,"requestHeaders"
, pour inclure les en-têtes de demande dans l'objet dedetails
transmis à l'écouteur.
Compatibilité des navigateurs
BCD tables only load in the browser
Exemples
Ce code intercepte les requêtes à <all_urls>
, et les envoie par procuration si elles ne sont pas destinées à un cadre de premier niveau.
function shouldProxyRequest(requestInfo) {
return requestInfo.parentFrameId != -1;
}
function handleProxyRequest(requestInfo) {
if (shouldProxyRequest(requestInfo)) {
console.log(`Proxying: ${requestInfo.url}`);
return { type: "http", host: "127.0.0.1", port: 65535 };
}
return { type: "direct" };
}
browser.proxy.onRequest.addListener(handleProxyRequest, {
urls: ["<all_urls>"],
});