proxy

Use the proxy API to proxy web requests. You can use the proxy.onRequest event listener to intercept web requests, and return an object that describes whether and how to proxy them.

The advantage of the proxy.onRequest approach is that the code that implements your proxy policy runs in your extension's background script, so it gets full access to the WebExtension APIs available to your extension (including, for example, access to your extension's storage and networking APIs like dns).

Apart from this API, extensions can also use the browserSettings.proxyConfig property to configure global proxy settings.

Note: Chrome, Edge, and Opera have an extension API also called "proxy" which is functionally similar to this API, in that extensions can use it to implement a proxying policy. However, the design of the Chrome API is completely different to this API. Because this API is incompatible with the Chrome proxy API, this API is only available through the browser namespace.

To use this API you need to have the "proxy" permission. Also, where you want to intercept requests, you also need host permission for the URLs of intercepted requests.

The "proxy" permission requires "strict_min_version" to be set to "91.1.0" or above. To use this permission, add or update the "browser_specific_settings" key in your manifest.json to specify a minimum Firefox version. See Securing the proxy API for Firefox add-ons for more information.

Note: The browser can make speculative connections, where it determines that a request to a URI may be coming soon. This type of connection does not provide valid tab information, so request details such as tabId, frameId, parentFrameId, etc. are inaccurate. These connections have a webRequest.ResourceType of speculative.

Types

proxy.ProxyInfo

Describes a proxy.

proxy.RequestDetails

Contains information about a web request that the browser is about to make.

Properties

proxy.settings

Get and set proxy settings.

Events

proxy.onError

Fired when the system encounters an error running the PAC script or the onRequest listener.

proxy.onRequest

Fired when a web request is about to be made, giving the extension an opportunity to proxy it.

Example extensions

Browser compatibility

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Firefox for Android
Safari on iOS
proxy
ProxyInfo
ProxyInfo.proxyAuthorizationHeader
RequestDetails
RequestDetails.cookieStoreId
RequestDetails.documentUrl
RequestDetails.frameId
RequestDetails.fromCache
RequestDetails.incognito
RequestDetails.method
RequestDetails.originUrl
RequestDetails.parentFrameId
RequestDetails.requestHeaders
RequestDetails.requestId
RequestDetails.tabId
RequestDetails.thirdParty
RequestDetails.timeStamp
RequestDetails.type
RequestDetails.url
onError
onRequest
settings

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
See implementation notes.
Uses a non-standard name.
Has more compatibility info.