webRequest.onSendHeaders
Это событие срабатывает незадолго перед отправкой заголовков. Если ваша расширение или какое-либо другое расширение изменили заголовки в , вы увидите изменённую версию здесь.onBeforeSendHeaders
Это событие является только информационным.
Синтаксис
browser.webRequest.onSendHeaders.addListener( listener, // function filter, // object extraInfoSpec // optional array of strings ) browser.webRequest.onSendHeaders.removeListener(listener) browser.webRequest.onSendHeaders.hasListener(listener)
События имеют три функции:
addListener(callback, filter, extraInfoSpec)-
Добавляет слушателя к этому событию.
removeListener(listener)-
Прекратить прослушивание этого события. Аргумент
listener— это слушатель, который нужно удалить. hasListener(listener)-
Проверить, зарегистрирован ли
listenerдля этого события. Возвращаетtrue, если он прослушивает, иfalse, в противном случае.
Синтаксис addListener
Параметры
callback-
Функция, которая будет вызвана при возникновении этого события. Функция получит следующие аргументы:
details-
object. Сведения о запросе. См. раздел details для получения дополнительной информации.
filter-
webRequest.RequestFilter. Фильтр, который ограничивает события, которые будут отправлены этому слушателю. -
extraInfoSpecНеобязательно -
arraystring. Дополнительные параметры для события. Вы можете передать только одно значение здесь:-
"requestHeaders": включить заголовки запроса в объектdetails, переданный слушателю
-
Дополнительные объекты
details
-
string. Если запрос исходит из вкладки, открытой в контекстной идентичности, идентификатор хранилища cookie контекстной идентичности. documentUrl-
string. URL документа, в котором будет загружен ресурс. Например, если веб-страница по адресу "https://example.com" содержит изображение или iframe, тоdocumentUrlдля изображения или iframe будет "https://example.com". Для верхнего уровня документаdocumentUrlне определено. frameId-
integer. Ноль, если запрос происходит в основном фрейме; положительное значение — это идентификатор подфрейма, в котором происходит запрос. Если документ (под)фрейма загружен (typeравенmain_frameилиsub_frame),frameIdуказывает идентификатор этого фрейма, а не идентификатор внешнего фрейма. Идентификаторы фреймов уникальны в рамках вкладки. incognito-
boolean. Является ли запрос из окна приватного просмотра. 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. Идентификатор фрейма, содержащего фрейм, который отправил запрос. Установлено в -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. Идентификатор запроса. Идентификаторы запросов уникальны в рамках сессии браузера, поэтому вы можете использовать их для связи различных событий, связанных с одним запросом. -
requestHeadersНеобязательно -
webRequest.HttpHeaders. HTTP-заголовки запроса, которые были отправлены с этим запросом. tabId-
integer. Идентификатор вкладки, в которой происходит запрос. Установлено в -1, если запрос не связан с вкладкой. thirdParty-
boolean. Указывает, являются ли запрос и его иерархия окна сторонними. timeStamp-
number. Время срабатывания этого события в миллисекундах с начала эпохи. type-
webRequest.ResourceType. Тип запрашиваемого ресурса: например, "image", "script", "stylesheet". 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 для Android | Opera Android | Safari на IOS | Samsung Internet | |
onSendHeaders |
Да | 14 | 45 | ? | Да | 14extraInfoSpec опции не поддерживаются. |
? | ? | 48 | ? | Нет | ? |
Примеры
Этот код регистрирует все cookies, которые будут отправлены при выполнении запросов к целевому шаблону соответствия:
// The target match pattern let targetPage = "*://*.google.ca/*"; // Log cookies sent with this request function logCookies(e) { for (const header of e.requestHeaders) { if (header.name === "Cookie") { console.log(header.value); } } } // Listen for onSendHeaders, and pass // "requestHeaders" so we get the headers browser.webRequest.onSendHeaders.addListener( logCookies, {urls: [targetPage]}, ["requestHeaders"] );
Примечание: Этот 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/onSendHeaders