Spec-Zone.ru › Web Extensions

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 Необязательно

array string. Дополнительные параметры для события. Передайте "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>"]});

Примеры расширений

  • proxy-blocker

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API