Spec-Zone.ru › Web Extensions

webRequest.onErrorOccurred

Срабатывает, когда запрос не может быть обработан из-за ошибки: например, отсутствия подключения к Интернету.

Ошибка передаётся слушателю как свойство error объекта details.

Обратите внимание, что это событие не срабатывает при HTTP-ошибках (ответы 4XX или 5XX): они пройдут обычные этапы обработки запроса, вызвав любые слушатели событий и установив значение details.statusCode для отчёта об ошибке.

Это событие является только информационным.

Синтаксис

browser.webRequest.onErrorOccurred.addListener(
  listener,             // function
  filter                //  object
)
browser.webRequest.onErrorOccurred.removeListener(listener)
browser.webRequest.onErrorOccurred.hasListener(listener)

События имеют три функции:

addListener(callback, filter)

Добавляет слушателя к этому событию.

removeListener(listener)

Прекращает прослушивание этого события. Аргумент listener — это слушатель, который нужно удалить.

hasListener(listener)

Проверяет, зарегистрирован ли listener для этого события. Возвращает true если он прослушивает, false в противном случае.

Синтаксис addListener

Параметры

callback

Функция, которая будет вызвана при возникновении этого события. Функции будут переданы следующие аргументы:

details

object. Детали о запросе. Подробности см. в разделе details.

filter

webRequest.RequestFilter. Фильтр, который ограничивает события, которые будут отправлены этому слушателю.

Дополнительные объекты

details

cookieStoreId

string. Если запрос происходит из вкладки, открытой в контекстной личности, ID хранилища cookie этой контекстной личности.

documentUrl

string. URL документа, в котором будет загружен ресурс. Например, если веб-страница по адресу "https://example.com" содержит изображение или iframe, то documentUrl для изображения или iframe будет "https://example.com". Для верхнего уровня документа documentUrl не определено.

error

string. Описание ошибки. Эта строка — внутренняя строка ошибки, может отличаться в разных браузерах и не гарантируется, что останется неизменной между выпусками.

frameId

integer. Ноль, если запрос происходит в главном фрейме; положительное значение — ID подфрейма, в котором происходит запрос. Если документ (под)фрейма загружен (type равен main_frame или sub_frame), frameId указывает ID этого фрейма, а не ID внешнего фрейма. ID фреймов уникальны в пределах вкладки.

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. True, если прокси выполнит разрешение доменных имён на основе предоставленного имени хоста, означая, что клиент не должен выполнять собственный DNS-запрос.

failoverTimeout

integer. Время ожидания переключения в секундах. Если подключение к прокси прерывается, прокси не будет использоваться в течение этого периода.

requestId

string. ID запроса. ID запросов уникальны в сеансе браузера, так что их можно использовать для связи различных событий, связанных с одним запросом.

tabId

integer. ID вкладки, в которой происходит запрос. Установлено в -1, если запрос не связан с вкладкой.

thirdParty

boolean. Указывает, являются ли запрос и его иерархия окон сторонними.

timeStamp

number. Время срабатывания события в миллисекундах с момента эпохи Unix epoch.

type

webRequest.ResourceType. Тип запрашиваемого ресурса: например, "image", "script", "stylesheet".

url

string. Цель запроса.

urlClassification

object. Тип отслеживания, связанный с запросом, если запрос был классифицирован функцией Firefox Tracking Protection. Это объект со следующими свойствами:

firstParty

array strings. Флаги классификации первого уровня для запроса.

thirdParty

array strings. Флаги классификации для сторонних ресурсов запроса или иерархии окон.

Флаги классификации включают:

  • 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: мета-флаг, объединяющий любые флаги социального отслеживания.

Примечание Если Firefox Tracking Protection блокирует запрос, возвращается пустой объект, и error возвращает один из этих кодов:

  • NS_ERROR_MALWARE_URI указывает на URI вредоносного ПО.
  • NS_ERROR_PHISHING_URI указывает на URI фишинга.
  • NS_ERROR_TRACKING_URI указывает на URI отслеживания.
  • NS_ERROR_UNWANTED_URI указывает на нежелательный URI.
  • NS_ERROR_BLOCKED_URI указывает на заблокированный URI.
  • NS_ERROR_HARMFUL_URI указывает на вредный URI.
  • NS_ERROR_FINGERPRINTING указывает на URI определения личности.
  • NS_ERROR_CRYPTOMINING_URI указывает на URI добычи криптовалюты.
  • NS_ERROR_SOCIALTRACKING_URI указывает на URI социального отслеживания.

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet
onErrorOccurred Да 14 45 ? Да
14extraInfoSpec функции не поддерживаются.
? ? 48 ? Нет ?
END_OF_DOCUMENT_MARKER

Примеры

let target = "<all_urls>";

/*
e.g., with no network:
"https://developer.mozilla.org/en-US/"
NS_ERROR_NET_ON_RESOLVED in Firefox
net::ERR_INTERNET_DISCONNECTED in Chrome
*/
function logError(responseDetails) {
  console.log(responseDetails.url);
  console.log(responseDetails.error);
}

browser.webRequest.onErrorOccurred.addListener(
  logError,
  {urls: [target]}
);

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

  • stored-credentials

Примечание: Этот 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/onErrorOccurred

Spec-Zone.ru

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