Fired when a web request is about to be made, to give the extension an opportunity to proxy it.
This event is closely modeled on the events defined in the
webRequest
API. Like those events, its
addListener()
function takes three arguments:
RequestFilter
object controlling which requests cause the event to fire.
The event is fired before any of the
webRequest
events for the same request.
When the event is fired, the listener is called with an object containing information about the request. The listener returns a
proxy.ProxyInfo
object representing a proxy to use (or an array of
proxy.ProxyInfo
objects, enabling the browser to fail over if a proxy is unreachable).
要使用
proxy.onRequest
, an extension must have the "proxy"
API permission
和
host permission
for the URLs of the requests that it intercepts, which means that the match patterns in the
filter
argument must be a subset of the extension's host permissions.
browser.proxy.onRequest.addListener(
listener
,
// function
filter
,
// object
extraInfoSpec
// optional array of strings
)
浏览器
.
proxy
.
onRequest
.
removeListener
(
listener
)
浏览器
.
proxy
.
onRequest
.
hasListener
(
listener
)
Events have three functions:
addListener(listener, filter, extraInfoSpec)
Adds a listener to this event.
removeListener(listener)
Stop listening to this event. The
listener
argument is the listener to remove.
hasListener(listener)
校验是否
listener
is registered for this event. Returns
true
if it is listening,
false
否则。
listener
The function that is called when this event occurs. The function is passed a single argument, which is a
proxy.RequestDetails
object containing details of the request.
The listener can return any of:
proxy.ProxyInfo
对象。
proxy.ProxyInfo
对象。
Promise
解析为
ProxyInfo
对象。
Promise
that resolves to an array of
ProxyInfo
对象。
If the listener returns an array, or a Promise that resolves to an array, then all
ProxyInfo
objects after the first one represent failovers: if the proxy at position N in the array is not reachable when its
ProxyInfo.failoverTimeout
expires the browser will try the proxy at position N+1.
If there is an error specifying the
proxy.ProxyInfo
objects, then
proxy.onError
被调用。
filter
webRequest.RequestFilter
. A set of filters that restricts the events that are sent to the listener.
extraInfoSpec
可选
array
of
string
. Extra options for the event. Pass
"requestHeaders"
to include the request headers in the
details
object passed to the listener.
BCD tables only load in the browser
This code intercepts requests to
<all_urls>
, and proxies them if they are not for a top-level frame.
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>"]});
最后修改: , 由 MDN 贡献者