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
-
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-
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: мета-флаг, объединяющий любые флаги социального отслеживания.
Примечание Если 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 | ? | Нет | ? |
Примеры
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]} );
Примеры расширений
Примечание: Этот 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