proxy.onRequest
Wird ausgelöst, wenn eine Webanfrage gestellt werden soll, um der Erweiterung die Möglichkeit zu geben, sie zu proxen.
Dieses Ereignis ist eng an den in der webRequest
API definierten Ereignissen orientiert. Wie diese Ereignisse nimmt die Funktion addListener()
drei Argumente an:
- den Listener, der aufgerufen wird, wenn das Ereignis ausgelöst wird,
- ein
RequestFilter
-Objekt, das steuert, welche Anfragen das Ereignis auslösen, - ein Array von Zeichenfolgen, um andere Aspekte des Verhaltens des Ereignisses zu steuern.
Das Ereignis wird vor allen webRequest
-Ereignissen für dieselbe Anfrage ausgelöst.
Wenn das Ereignis ausgelöst wird, wird der Listener mit einem Objekt aufgerufen, das Informationen über die Anfrage enthält. Der Listener gibt ein proxy.ProxyInfo
-Objekt zurück, das einen zu verwendenden Proxy darstellt (oder ein Array von proxy.ProxyInfo
-Objekten, wodurch der Browser übergehen kann, wenn ein Proxy nicht erreichbar ist). Standardmäßig fällt die Anfrage auf jeden vom Browser definierten Proxy zurück, es sei denn, ein null
-Objekt oder ein Array, das mit einem null
-Objekt endet, wird zurückgegeben.
Um proxy.onRequest
zu verwenden, muss eine Erweiterung die "proxy"-API-Berechtigung und die Hostberechtigung für die URLs der Anfragen haben, die sie abfängt, was bedeutet, dass die Muster im filter
-Argument eine Teilmenge der Hostberechtigungen der Erweiterung sein müssen.
Syntax
browser.proxy.onRequest.addListener(
listener, // function
filter, // object
extraInfoSpec // optional array of strings
)
browser.proxy.onRequest.removeListener(listener)
browser.proxy.onRequest.hasListener(listener)
Ereignisse haben drei Funktionen:
addListener(listener, filter, extraInfoSpec)
-
Fügt einen Listener zu diesem Ereignis hinzu.
removeListener(listener)
-
Stoppt das Lauschen auf dieses Ereignis. Das Argument
listener
ist der zu entfernende Listener. hasListener(listener)
-
Prüft, ob
listener
für dieses Ereignis registriert ist. Gibttrue
zurück, wenn er lauscht, andernfallsfalse
.
Syntax von addListener
Parameter
listener
-
Die Funktion, die aufgerufen wird, wenn dieses Ereignis eintritt. Der Funktion wird ein Argument übergeben, das ein
proxy.RequestDetails
-Objekt ist, welches Details der Anfrage enthält.Der Listener kann eines der folgenden zurückgeben:
- ein
proxy.ProxyInfo
-Objekt. - ein Array von
proxy.ProxyInfo
-Objekten. - ein
Promise
, das sich zu einemProxyInfo
-Objekt auflöst. - ein
Promise
, das sich zu einem Array vonProxyInfo
-Objekten auflöst.
Wenn der Listener ein Array oder ein Promise, das sich zu einem Array auflöst, zurückgibt, stellen die
ProxyInfo
-Objekte nach dem ersten eine Ausfallsicherung dar. Ist der Proxy an Position N im Array nicht erreichbar, wenn dieProxyInfo.failoverTimeout
abläuft, versucht der Browser den Proxy an Position N+1.Standardmäßig fällt die Anfrage auf jeden vom Browser definierten Proxy zurück, es sei denn, ein
null
-Objekt oder ein Array, das mit einemnull
-Objekt endet ([{ ... proxy info ...} , null]
), wird zurückgegeben.Wenn es einen Fehler bei der Spezifizierung der
proxy.ProxyInfo
-Objekte gibt, wirdproxy.onError
aufgerufen. - ein
filter
-
webRequest.RequestFilter
. Eine Reihe von Filtern, die die Ereignisse einschränken, die an den Listener gesendet werden. extraInfoSpec
Optional-
array
vonstring
. Zusätzliche Optionen für das Ereignis. Übergeben Sie"requestHeaders"
, um die Anforderungsheader imdetails
-Objekt einzuschließen, das an den Listener übergeben wird.
Beispiele
Dieser Code fängt Anfragen an <all_urls>
ab und proxyt sie, wenn sie nicht für einen Top-Level-Frame bestimmt sind.
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>"],
});
Beispielerweiterungen
Browser-Kompatibilität
BCD tables only load in the browser