Spec-Zone.ru › Web Extensions

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

array string. Дополнительные параметры для события. Вы можете передать только одно значение здесь:

  • "requestHeaders": включить заголовки запроса в объект details, переданный слушателю

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

details

cookieStoreId

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

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

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

Рабочие столы Мобильные устройства
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

Spec-Zone.ru

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