proxy.onRequest
Вызывается, когда происходит запрос веб-страницы, чтобы расширение получило возможность его проксировать.
Этот событие тесно моделируется на событиях, определённых в API webRequest. Как и эти события, его addListener() функция принимает три аргумента:
- слушатель, который вызывается при срабатывании события.
- объект
RequestFilter, контролирующий, какие запросы вызывают срабатывание события. - массив строк для управления другими аспектами поведения события.
Событие срабатывает до срабатывания любого из webRequest событий для того же запроса.
При срабатывании события, слушатель вызывается с объектом, содержащим информацию о запросе. Слушатель возвращает объект proxy.ProxyInfo, представляющий прокси для использования (или массив объектов proxy.ProxyInfo, позволяя браузеру переключаться на резервный вариант, если прокси недоступен).
Для использования proxy.onRequest, расширение должно иметь разрешение "proxy" API-разрешения и разрешение на хост для URL-адресов запросов, которые оно перехватывает, что означает, что шаблоны соответствия в аргументе filter должны быть подмножеством разрешений на хост расширения.
Синтаксис
browser.proxy.onRequest.addListener( listener, // function filter, // object extraInfoSpec // optional array of strings ) browser.proxy.onRequest.removeListener(listener) browser.proxy.onRequest.hasListener(listener)
События имеют три функции:
addListener(listener, filter, extraInfoSpec)-
Добавляет слушателя к этому событию.
removeListener(listener)-
Прекращает прослушивание этого события. Аргумент
listener— это слушатель, который нужно удалить. hasListener(listener)-
Проверяет, зарегистрирован ли
listenerдля этого события. Возвращаетtrueесли он прослушивает,falseв противном случае.
Синтаксис addListener
Параметры
listener-
Функция, которая вызывается при наступлении этого события. Функция получает один аргумент, который является объектом
proxy.RequestDetails, содержащим подробности запроса.Слушатель может возвращать любое из следующих значений:
- объект
proxy.ProxyInfo. - массив объектов
proxy.ProxyInfo. - объект
Promise, который разрешается в объектProxyInfo. - объект
Promise, который разрешается в массив объектовProxyInfo.
Если слушатель возвращает массив или промис, разрешающийся в массив, то все объекты
ProxyInfoпосле первого представляют собой резервные варианты: если прокси на позиции N в массиве недоступен, когда истекает егоProxyInfo.failoverTimeoutсрок действия, браузер попробует прокси на позиции N+1.Если возникла ошибка при указании объектов
proxy.ProxyInfo, то вызываетсяproxy.onError. - объект
filter-
webRequest.RequestFilter. Набор фильтров, которые ограничивают события, отправляемые слушателю. -
extraInfoSpecНеобязательно -
arraystring. Дополнительные параметры для события. Передайте"requestHeaders"для включения заголовков запроса в объектdetails, переданный слушателю.
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | |
onRequest |
Нет | Нет | 60До версии 78 свойства фильтровtabId и windowId игнорируются. |
? | Нет | Нет | ? | ? | 60 | ? | Нет | ? |
Примеры
Этот код перехватывает запросы к <all_urls>, и проксирует их, если они не для верхнего уровня фрейма.
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>"]});
Примеры расширений
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/proxy/onRequest