webRequest.onBeforeRedirect
Вызывается, когда происходит переадресация, инициированная сервером.
Обратите внимание, что вы не можете передать "blocking" для этого события, поэтому вы не можете изменить или отменить запрос из этого события: оно только информативное.
Синтаксис
browser.webRequest.onBeforeRedirect.addListener( listener, // function filter, // object extraInfoSpec // optional array of strings ) browser.webRequest.onBeforeRedirect.removeListener(listener) browser.webRequest.onBeforeRedirect.hasListener(listener)
События имеют три функции:
addListener(callback, filter, extraInfoSpec)-
Добавляет обработчик к этому событию.
removeListener(listener)-
Прекратить прослушивание этого события. Аргумент
listener— это обработчик, который нужно удалить. hasListener(listener)-
Проверить, зарегистрирован ли
listenerдля этого события. Возвращаетtrue, если он прослушивает,falseв противном случае.
Синтаксис addListener
Параметры
callback-
Функция, которая будет вызвана при возникновении этого события. Функция получит следующие аргументы:
details-
object. Сведения о запросе. См. раздел details для получения дополнительной информации.
filter-
webRequest.RequestFilter. Фильтр, который ограничивает события, которые будут отправлены этому обработчику. -
extraInfoSpecНеобязательно -
arraystring. Дополнительные параметры для события. Можно передать только одно значение:-
"responseHeaders": включитьresponseHeadersв объектdetails, переданный обработчику
-
Дополнительные объекты
details
-
string. Если запрос исходит из вкладки, открытой в контекстной идентичности, идентификатор хранилища cookie контекстной идентичности. documentUrl-
string. URL документа, в котором будет загружен ресурс. Например, если веб-страница по адресу "https://example.com" содержит изображение или iframe, тоdocumentUrlдля изображения или iframe будет "https://example.com". Для верхнего документаdocumentUrlне определено. frameId-
integer. Ноль, если запрос происходит в основном фрейме; положительное значение — это идентификатор подфрейма, в котором происходит запрос. Если документ (под-)фрейма загружен (typemain_frameилиsub_frame),frameIdуказывает на идентификатор этого фрейма, а не внешнего фрейма. Идентификаторы фреймов уникальны в рамках вкладки. fromCache-
boolean. Указывает, был ли этот ответ получен из кэша на диске. incognito-
boolean. Является ли запрос из окна приватного просмотра. ip-
string. IP-адрес сервера, к которому был отправлен запрос. Может быть буквальным IPv6-адресом. method-
string. Стандартный HTTP-метод: например, "GET" или "POST". originUrl-
string. URL ресурса, который вызвал запрос. Например, если "https://example.com" содержит ссылку, и пользователь нажимает на ссылку, тоoriginUrlдля полученного запроса будет "https://example.com".originUrlчасто, но не всегда, совпадает сdocumentUrl. Например, если страница содержит iframe, а iframe содержит ссылку, которая загружает новый документ в iframe, тоdocumentUrlдля полученного запроса будет родительским документом iframe, ноoriginUrlбудет URL документа в iframe, содержащем ссылку. parentFrameId-
integer. ID фрейма, содержащего фрейм, который отправил запрос. Устанавливается в -1, если родительский фрейм не существует. proxyInfo-
object. Это свойство присутствует только если запрос проксируется. Оно содержит следующие свойства:host-
string. Имя хоста прокси-сервера. port-
integer. Номер порта прокси-сервера. type-
string. Тип прокси-сервера. Один из:- "http": HTTP прокси (или SSL CONNECT для HTTPS)
- "https": HTTP проксирование через TLS-соединение с прокси
- "socks": SOCKS v5 прокси
- "socks4": SOCKS v4 прокси
- "direct": без прокси
- "unknown": неизвестный прокси
username-
string. Имя пользователя для службы прокси. proxyDNS-
boolean. Истина, если прокси будет выполнять разрешение доменных имен на основе предоставленного имени хоста, что означает, что клиент не должен выполнять собственный DNS-запрос. failoverTimeout-
integer. Время ожидания резервного копирования в секундах. Если соединение с прокси прерывается, прокси больше не будет использоваться в течение этого периода.
redirectUrl-
string. Новый URL. requestId-
string. Идентификатор запроса. Идентификаторы запросов уникальны в сессии браузера, поэтому вы можете использовать их для связи различных событий, связанных с одним и тем же запросом. responseHeaders-
webRequest.HttpHeaders. HTTP-заголовки ответа, полученные вместе с этим перенаправлением. statusCode-
integer. Стандартный HTTP-код состояния, возвращённый сервером. statusLine-
string. HTTP строка состояния ответа или строка 'HTTP/0.9 200 OK' для ответов HTTP/0.9 (т.е. ответов, которые не имеют строки состояния) или пустая строка, если нет заголовков. tabId-
integer. Идентификатор вкладки, в которой происходит запрос. Устанавливается в -1, если запрос не связан с вкладкой. thirdParty-
boolean. Указывает, являются ли запрос и его иерархия окон сторонними. timeStamp-
number. Время, когда было срактивировано данное событие, в миллисекундах с момента эпохи. type-
webRequest.ResourceType. Тип запрашиваемого ресурса: например, "изображение", "скрипт", "стиль". url-
string. Цель запроса. urlClassification-
object. Тип отслеживания, связанный с запросом, если запрос был классифицирован расширенной защитой от отслеживания Firefox. Это объект со следующими свойствами:firstParty-
arraystrings. Флаги классификации для первой стороны запроса. thirdParty-
arraystrings. Флаги классификации для запроса или иерархии окон сторонних.
Флаги классификации включают:
-
fingerprintingиfingerprinting_content: указывает, что запрос участвует в определении личности.fingerprinting_contentуказывает, что запрос загружается из источника, который был определён как участвующий в определении личности, но не считается участвующим в отслеживании, например, поставщик платежей. -
cryptominingиcryptomining_content: аналогично категории определения личности, но для ресурсов майнинга криптовалюты. -
tracking,tracking_ad,tracking_analytics,tracking_social, иtracking_content: указывает, что запрос участвует в отслеживании.tracking— это любой общий запрос отслеживания, суффиксыad,analytics,social, иcontentидентифицируют тип отслеживателя. -
any_basic_tracking: мета-флаг, объединяющий все флаги отслеживания и определения личности, за исключениемtracking_contentиfingerprinting_content. -
any_strict_tracking: мета-флаг, объединяющий все флаги отслеживания и определения личности, включаяtracking_contentиfingerprinting_content. -
any_social_tracking: мета-флаг, объединяющий все флаги социального отслеживания.
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | |
onBeforeRedirect |
Да | 14 | 46 | ? | Да | 14extraInfoSpec опции не поддерживаются. |
? | ? | 48 | ? | Нет | ? |
Примеры
let target = "https://developer.mozilla.org/*"; /* e.g. "https://developer.mozilla.org/" "https://developer.mozilla.org/en-US/" */ function logResponse(responseDetails) { console.log(responseDetails.url); console.log(responseDetails.redirectUrl); } browser.webRequest.onBeforeRedirect.addListener( logResponse, {urls: [target]} );
Примечание: Этот API основан на API chrome.webRequest Chromium. Данная документация взята из web_request.json кода Chromium.
© 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/webRequest/onBeforeRedirect