chrome.webRequest

Описание

Используйте API chrome.webRequest для наблюдения и анализа трафика, а также для перехвата, блокирования или изменения запросов в процессе их выполнения.

Разрешения

webRequest

Для использования API веб-запросов необходимо объявить разрешение "webRequest" в манифесте расширения , а также необходимые разрешения хоста . Для перехвата запроса на подресурс расширение должно иметь доступ как к запрошенному URL-адресу, так и к его инициатору. Например:

{   "name": "My extension",   ...   "permissions": [     "webRequest"   ],   "host_permissions": [     "*://*.google.com/*"   ],   ... } 

webRequestBlocking

Требуется для регистрации обработчиков блокирующих событий. Начиная с Manifest V3, это доступно только для расширений, установленных политиками.

webRequestAuthProvider

Требуется для использования метода onAuthRequired . См. раздел Обработка аутентификации .

Концепции и использование

Жизненный цикл запросов

API веб-запросов определяет набор событий, отслеживающих жизненный цикл веб-запроса. Эти события можно использовать для отслеживания и анализа трафика. Некоторые синхронные события позволяют перехватывать, блокировать или изменять запрос.

Здесь проиллюстрирован жизненный цикл событий для успешных запросов, а затем приведены определения событий:

Жизненный цикл веб-запроса с точки зрения API веб-запроса

onBeforeRequest (опционально синхронный)
Срабатывает перед выполнением запроса. Это событие отправляется до установления TCP-соединения и может использоваться для отмены или перенаправления запросов.
onBeforeSendHeaders (опционально синхронный)
Срабатывает перед выполнением запроса и при условии подготовки начальных заголовков. Событие позволяет расширениям добавлять, изменять и удалять заголовки запроса (*) . Событие onBeforeSendHeaders передаётся всем подписчикам, поэтому разные подписчики могут попытаться изменить запрос; см. раздел «Подробности реализации», чтобы узнать, как это обрабатывается. Это событие можно использовать для отмены запроса.
onSendHeaders
Срабатывает после того, как все расширения успели изменить заголовки запроса, и отображает финальную (*) версию. Событие срабатывает до отправки заголовков в сеть. Это информационное событие обрабатывается асинхронно. Оно не позволяет изменить или отменить запрос.
onHeadersReceived (опционально синхронно)
Срабатывает каждый раз при получении заголовка ответа HTTP(S). Из-за перенаправлений и запросов аутентификации это может происходить несколько раз за запрос. Это событие позволяет расширениям добавлять, изменять и удалять заголовки ответов, например, входящие заголовки Content-Type. Директивы кэширования обрабатываются до срабатывания этого события, поэтому изменение заголовков, таких как Cache-Control, не влияет на кэш браузера. Оно также позволяет отменить или перенаправить запрос.
onAuthRequired (опционально синхронный)
Срабатывает, когда запрос требует аутентификации пользователя. Это событие можно обрабатывать синхронно для предоставления учётных данных аутентификации. Обратите внимание, что расширения могут предоставлять недействительные учётные данные. Будьте осторожны, чтобы не попасть в бесконечный цикл, многократно предоставляя недействительные учётные данные. Это также можно использовать для отмены запроса.
onBeforeRedirect
Срабатывает перед выполнением перенаправления. Перенаправление может быть инициировано кодом ответа HTTP или расширением. Это информационное событие обрабатывается асинхронно. Оно не позволяет изменить или отменить запрос.
onResponseStarted
Срабатывает при получении первого байта тела ответа. Для HTTP-запросов это означает, что строка статуса и заголовки ответа доступны. Это событие является информационным и обрабатывается асинхронно. Оно не позволяет изменить или отменить запрос.
onCompleted
Срабатывает при успешной обработке запроса.
onErrorOccurred
Срабатывает, если запрос не может быть успешно обработан.

API веб-запросов гарантирует, что для каждого запроса в качестве конечного события срабатывает событие onCompleted или onErrorOccurred , за одним исключением: если запрос перенаправляется на URL-адрес data:// , то последним зарегистрированным событием будет onBeforeRedirect .

* Обратите внимание, что API веб-запросов представляет расширению абстракцию сетевого стека. Внутри один URL-запрос может быть разделён на несколько HTTP-запросов (например, для извлечения отдельных диапазонов байтов из большого файла) или может быть обработан сетевым стеком без взаимодействия с сетью. По этой причине API не предоставляет окончательные HTTP-заголовки, отправляемые в сеть. Например, все заголовки, связанные с кэшированием, невидимы для расширения.

Следующие заголовки в настоящее время не предоставляются событию onBeforeSendHeaders . Полнота и стабильность этого списка не гарантируется.

  • Авторизация
  • Cache-Control
  • Связь
  • Длина контента
  • Хозяин
  • Если-изменено-с
  • Если-Нет-Совпадения
  • Если-диапазон
  • Частичные данные
  • Прагма
  • Прокси-авторизация
  • Прокси-соединение
  • Передача-кодирование

Начиная с Chrome 79, изменения заголовков запросов влияют на проверки CORS (Cross-Origin Resource Sharing). Если изменённые заголовки для запросов из разных источников не соответствуют критериям, будет отправлен предварительный запрос CORS с запросом к серверу о возможности их принятия. Если вам действительно необходимо изменить заголовки таким образом, чтобы нарушить протокол CORS, необходимо указать 'extraHeaders' в opt_extraInfoSpec . С другой стороны, изменения заголовков ответов не позволяют обмануть проверки CORS. Если вам нужно обмануть протокол CORS, необходимо также указать 'extraHeaders' для изменений ответов.

Начиная с Chrome 79, API webRequest по умолчанию не перехватывает предварительные запросы и ответы CORS. Предварительный запрос CORS для URL-адреса запроса виден расширению, если для URL-адреса запроса указан прослушиватель с 'extraHeaders' в opt_extraInfoSpec . onBeforeRequest также может принимать 'extraHeaders' из Chrome 79.

Начиная с Chrome 79, следующий заголовок запроса не предоставляется и не может быть изменен или удален без указания 'extraHeaders' в opt_extraInfoSpec :

  • Источник

Начиная с Chrome 72, если вам необходимо изменить ответы до того, как Cross Origin Read Blocking (CORB) сможет заблокировать ответ, вам необходимо указать 'extraHeaders' в opt_extraInfoSpec .

Начиная с Chrome 72, следующие заголовки запросов не предоставляются и не могут быть изменены или удалены без указания 'extraHeaders' в opt_extraInfoSpec :

  • Accept-Language
  • Accept-Encoding
  • Реферер
  • Печенье

Начиная с Chrome 72, заголовок ответа Set-Cookie не предоставляется и не может быть изменен или удален без указания 'extraHeaders' в opt_extraInfoSpec .

Начиная с Chrome 89, заголовок ответа X-Frame-Options не может быть эффективно изменен или удален без указания 'extraHeaders' в opt_extraInfoSpec .

API webRequest отображает только те запросы, на которые расширение имеет разрешение, учитывая его разрешения на хост . Более того, доступны только следующие схемы: http:// , https:// , ftp:// , file:// , ws:// (начиная с Chrome 58), wss:// (начиная с Chrome 58), urn: (начиная с Chrome 91) или chrome-extension:// . Кроме того, скрыты даже некоторые запросы с URL-адресами, использующими одну из вышеперечисленных схем. К ним относятся chrome-extension://other_extension_id , где other_extension_id не является идентификатором расширения для обработки запроса, https://www.google.com/chrome и другие конфиденциальные запросы, являющиеся ядром функциональности браузера. Также синхронные XMLHttpRequests из вашего расширения скрыты от блокирующих обработчиков событий, чтобы предотвратить взаимоблокировки. Обратите внимание, что для некоторых поддерживаемых схем набор доступных событий может быть ограничен из-за природы соответствующего протокола. Например, для схемы file: могут быть отправлены только onBeforeRequest , onResponseStarted , onCompleted и onErrorOccurred .

Начиная с Chrome 58, API webRequest поддерживает перехват запроса на рукопожатие WebSocket. Поскольку рукопожатие выполняется посредством HTTP-запроса на обновление, его последовательность соответствует HTTP-ориентированной модели webRequest. Обратите внимание, что API не перехватывает :

  • Отдельные сообщения отправляются по установленному соединению WebSocket.
  • WebSocket закрывает соединение.

Перенаправления не поддерживаются для запросов WebSocket.

Начиная с Chrome 72, расширение сможет перехватывать запрос только в том случае, если у него есть разрешения хоста как для запрошенного URL-адреса, так и для инициатора запроса.

Начиная с Chrome 96, API webRequest поддерживает перехват запроса на установление соединения WebTransport через HTTP/3. Поскольку установление соединения выполняется посредством HTTP-запроса CONNECT, его последовательность соответствует HTTP-ориентированной модели webRequest. Обратите внимание:

  • После установления сеанса расширения не могут наблюдать за сеансом или вмешиваться в него через API webRequest.
  • Изменение заголовков HTTP-запроса в onBeforeSendHeaders игнорируется.
  • Перенаправления и аутентификации не поддерживаются в WebTransport через HTTP/3.

Запросить идентификаторы

Каждый запрос идентифицируется идентификатором запроса. Этот идентификатор уникален в рамках сеанса браузера и контекста расширения. Он остаётся постоянным в течение жизненного цикла запроса и может использоваться для сопоставления событий для одного запроса. Обратите внимание, что в случае HTTP-перенаправления или HTTP-аутентификации несколько HTTP-запросов сопоставляются с одним веб-запросом.

Регистрация прослушивателей событий

Чтобы зарегистрировать прослушиватель событий для веб-запроса, используется вариация обычной функции addListener() . Помимо указания функции обратного вызова, необходимо указать аргумент фильтра и, возможно, дополнительный аргумент с информацией.

Три аргумента API веб-запроса addListener() имеют следующие определения:

var callback = function(details) {...}; var filter = {...}; var opt_extraInfoSpec = [...]; 

Вот пример прослушивания события onBeforeRequest :

chrome.webRequest.onBeforeRequest.addListener(     callback, filter, opt_extraInfoSpec); 

Каждый вызов addListener() принимает обязательную функцию обратного вызова в качестве первого параметра. Эта функция обратного вызова передаёт словарь, содержащий информацию о текущем URL-запросе. Информация в этом словаре зависит от типа события, а также от содержимого opt_extraInfoSpec .

Если необязательный массив opt_extraInfoSpec содержит строку 'blocking' (разрешено только для определённых событий), функция обратного вызова обрабатывается синхронно. Это означает, что запрос блокируется до завершения функции обратного вызова. В этом случае функция обратного вызова может вернуть ответ webRequest.BlockingResponse , определяющий дальнейший жизненный цикл запроса. В зависимости от контекста, этот ответ позволяет отменить или перенаправить запрос ( onBeforeRequest ), отменить запрос или изменить заголовки ( onBeforeSendHeaders , onHeadersReceived ), а также отменить запрос или предоставить учётные данные для аутентификации ( onAuthRequired ).

Если необязательный массив opt_extraInfoSpec содержит строку 'asyncBlocking' (разрешено только для onAuthRequired ), расширение может асинхронно сгенерировать webRequest.BlockingResponse .

filter webRequest.RequestFilter позволяет ограничить запросы, для которых события инициируются в различных измерениях:

URL-адреса
Шаблоны URL, такие как *://www.google.com/foo*bar .
Типы
Типы запросов, такие как main_frame (документ, загружаемый для фрейма верхнего уровня), sub_frame (документ, загружаемый для встроенного фрейма) и image (изображение на веб-сайте). См. webRequest.RequestFilter .
Идентификатор вкладки
Идентификатор одной вкладки.
Идентификатор окна
Идентификатор окна.

В зависимости от типа события вы можете указать строки в opt_extraInfoSpec для запроса дополнительной информации о запросе. Это используется для предоставления подробной информации о данных запроса только в случае явного запроса.

Обработка аутентификации

Для обработки запросов на HTTP-аутентификацию добавьте разрешение "webRequestAuthProvider" в файл манифеста:

{   "permissions": [     "webRequest",     "webRequestAuthProvider"   ] } 

Обратите внимание, что это разрешение не требуется для установленного расширения политики с разрешением "webRequestBlocking" .

Для синхронного предоставления учетных данных:

chrome.webRequest.onAuthRequired.addListener((details) => {     return {       authCredentials: {         username: 'guest',         password: 'guest'       }     };   },   { urls: ['https://httpbin.org/basic-auth/guest/guest'] },   ['blocking'] ); 

Чтобы предоставить учетные данные асинхронно:

chrome.webRequest.onAuthRequired.addListener((details, callback) => {     callback({       authCredentials: {         username: 'guest',         password: 'guest'       }     });   },   { urls: ['https://httpbin.org/basic-auth/guest/guest'] },   ['asyncBlocking'] ); 

Подробности реализации

При разработке расширения, использующего API веб-запросов, важно понимать некоторые детали реализации:

веб-доступные_ресурсы

Когда расширение использует API webRequest для перенаправления публичного запроса ресурса на ресурс, недоступный через веб, запрос блокируется и приводит к ошибке. Вышеуказанное справедливо, даже если ресурс, недоступный через веб, принадлежит перенаправляющему расширению. Чтобы объявить ресурсы для использования с API declarativeWebRequest, необходимо объявить и заполнить массив "web_accessible_resources" в манифесте, как описано здесь .

Разрешение конфликтов

В текущей реализации API веб-запросов запрос считается отменённым, если хотя бы одно расширение требует его отмены. Если расширение отменяет запрос, все расширения уведомляются событием onErrorOccurred . Одновременно только одно расширение может перенаправить запрос или изменить заголовок. Если несколько расширений пытаются изменить запрос, приоритет отдаётся последнему установленному расширению, а все остальные игнорируются. Расширение не уведомляется, если его инструкция на изменение или перенаправление была проигнорирована.

Кэширование

Chrome использует два типа кэша: кэш на диске и очень быстрый кэш в памяти. Время жизни кэша в памяти привязано к времени жизни процесса рендеринга, которое примерно соответствует времени жизни вкладки. Запросы, на которые отвечают из кэша в памяти, невидимы для API веб-запросов. Если обработчик запросов меняет своё поведение (например, поведение, в соответствии с которым запросы блокируются), простое обновление страницы может не учитывать это изменение поведения. Чтобы гарантировать, что изменение поведения будет выполнено, вызовите handlerBehaviorChanged() для очистки кэша в памяти. Но не делайте этого часто; очистка кэша — очень затратная операция. Вам не нужно вызывать handlerBehaviorChanged() после регистрации или отмены регистрации прослушивателя событий.

Временные метки

Свойство timestamp событий веб-запросов гарантирует только внутреннюю согласованность. Сравнение одного события с другим даст вам правильное смещение между ними, но сравнение с текущим временем внутри расширения (например, через (new Date()).getTime() ) может привести к неожиданным результатам.

Обработка ошибок

При попытке зарегистрировать событие с недопустимыми аргументами возникнет ошибка JavaScript, и обработчик событий не будет зарегистрирован. Если ошибка возникает во время обработки события или обработчик событий возвращает недопустимый блокирующий ответ, сообщение об ошибке выводится в консоль расширения, а обработчик игнорируется для данного запроса.

Примеры

Следующий пример иллюстрирует, как заблокировать все запросы к www.evil.com :

chrome.webRequest.onBeforeRequest.addListener(   function(details) {     return {cancel: details.url.indexOf("://www.evil.com/") != -1};   },   {urls: ["<all_urls>"]},   ["blocking"] ); 

Поскольку эта функция использует обработчик событий блокировки, для нее требуются разрешения "webRequest" , а также "webRequestBlocking" в файле манифеста.

Следующий пример достигает той же цели более эффективным способом, поскольку запросы, не нацеленные на www.evil.com , не нужно передавать расширению:

chrome.webRequest.onBeforeRequest.addListener(   function(details) { return {cancel: true}; },   {urls: ["*://www.evil.com/*"]},   ["blocking"] ); 

В следующем примере показано, как удалить заголовок User-Agent из всех запросов:

chrome.webRequest.onBeforeSendHeaders.addListener(   function(details) {     for (var i = 0; i < details.requestHeaders.length; ++i) {       if (details.requestHeaders[i].name === 'User-Agent') {         details.requestHeaders.splice(i, 1);         break;       }     }     return {requestHeaders: details.requestHeaders};   },   {urls: ["<all_urls>"]},   ["blocking", "requestHeaders"] ); 

Чтобы попробовать API chrome.webRequest , установите пример webRequest из репозитория chrome-extension-samples .

Типы

BlockingResponse

Возвращает значение для обработчиков событий, к которым применена блокирующая опция extraInfoSpec. Позволяет обработчику событий изменять сетевые запросы.

Характеристики

  • authCredentials

    объект необязательный

    Используется только в ответ на событие onAuthRequired. Если установлено, запрос выполняется с использованием предоставленных учётных данных.

    • пароль

      нить

    • имя пользователя

      нить

  • отмена

    логическое необязательное

    Если значение true, запрос отменяется. Это предотвращает отправку запроса. Это можно использовать в качестве ответа на события onBeforeRequest, onBeforeSendHeaders, onHeadersReceived и onAuthRequired.

  • redirectUrl

    строка необязательная

    Используется только в ответ на события onBeforeRequest и onHeadersReceived. Если установлено, исходный запрос не отправляется/не выполняется и перенаправляется на указанный URL. Перенаправления на схемы, отличные от HTTP, например, data: разрешены. Перенаправления, инициированные действием перенаправления, используют исходный метод запроса, за одним исключением: если перенаправление инициируется на этапе onHeadersReceived, то перенаправление будет выполнено методом GET. Перенаправления с URL со схемами ws:// и wss:// игнорируются .

  • requestHeaders

    HttpHeaders необязательны

    Используется только в ответ на событие onBeforeSendHeaders. Если установлено, запрос выполняется с этими заголовками.

  • responseHeaders

    HttpHeaders необязательны

    Используется только в ответ на событие onHeadersReceived. Если установлено, предполагается, что сервер ответил этими заголовками ответа. Возвращайте responseHeaders только в том случае, если вы действительно хотите изменить заголовки, чтобы ограничить количество конфликтов (только одно расширение может изменять responseHeaders для каждого запроса).

FormDataItem

Хром 66+

Содержит данные, переданные в форме data. Для формы в кодировке urlencode данные сохраняются как строка, если данные — это строка UTF-8, и как ArrayBuffer в противном случае. Для form-data это ArrayBuffer. Если form-data представляет собой загружаемый файл, данные сохраняются как строка с именем файла, если имя файла указано.

Перечисление

ArrayBuffer

нить

HttpHeaders

Массив HTTP-заголовков. Каждый заголовок представлен в виде словаря, содержащего ключи name и либо value , либо binaryValue .

Тип

объект[]

Характеристики

  • двоичное значение

    номер[] необязательно

    Значение заголовка HTTP, если его невозможно представить в формате UTF-8, хранится в виде отдельных байтовых значений (0..255).

  • имя

    нить

    Имя HTTP-заголовка.

  • ценить

    строка необязательная

    Значение заголовка HTTP, если оно может быть представлено в кодировке UTF-8.

IgnoredActionType

Хром 70+

Перечисление

«перенаправление»

"заголовки_запроса"

"заголовки_ответов"

"auth_credentials"

OnAuthRequiredOptions

Хром 44+

Перечисление

"responseHeaders"
Указывает, что заголовки ответа должны быть включены в событие.

"блокирование"
Указывает, что запрос блокируется до тех пор, пока не будет выполнен возврат из функции обратного вызова.

"asyncBlocking"
Указывает, что функция обратного вызова обрабатывается асинхронно.

"extraHeaders"
Указывает, что заголовки могут нарушать Cross-Origin Resource Sharing (CORS).

OnBeforeRedirectOptions

Хром 44+

Перечисление

"responseHeaders"
Указывает, что заголовки ответа должны быть включены в событие.

"extraHeaders"
Указывает, что заголовки могут нарушать Cross-Origin Resource Sharing (CORS).

OnBeforeRequestOptions

Хром 44+

Перечисление

"блокирование"
Указывает, что запрос блокируется до тех пор, пока не будет выполнен возврат из функции обратного вызова.

"requestBody"
Указывает, что тело запроса должно быть включено в событие.

"extraHeaders"
Указывает, что заголовки могут нарушать Cross-Origin Resource Sharing (CORS).

OnBeforeSendHeadersOptions

Хром 44+

Перечисление

"requestHeaders"
Указывает, что заголовок запроса должен быть включен в событие.

"блокирование"
Указывает, что запрос блокируется до тех пор, пока не будет выполнен возврат из функции обратного вызова.

"extraHeaders"
Указывает, что заголовки могут нарушать Cross-Origin Resource Sharing (CORS).

OnCompletedOptions

Хром 44+

Перечисление

"responseHeaders"
Указывает, что заголовки ответа должны быть включены в событие.

"extraHeaders"
Указывает, что заголовки могут нарушать Cross-Origin Resource Sharing (CORS).

OnErrorOccurredOptions

Хром 79+

Ценить

"extraHeaders"

OnHeadersReceivedOptions

Хром 44+

Перечисление

"блокирование"
Указывает, что запрос блокируется до тех пор, пока не будет выполнен возврат из функции обратного вызова.

"responseHeaders"
Указывает, что заголовки ответа должны быть включены в событие.

"extraHeaders"
Указывает, что заголовки могут нарушать Cross-Origin Resource Sharing (CORS).

OnResponseStartedOptions

Хром 44+

Перечисление

"responseHeaders"
Указывает, что заголовки ответа должны быть включены в событие.

"extraHeaders"
Указывает, что заголовки могут нарушать Cross-Origin Resource Sharing (CORS).

OnSendHeadersOptions

Хром 44+

Перечисление

"requestHeaders"
Указывает, что заголовок запроса должен быть включен в событие.

"extraHeaders"
Указывает, что заголовки могут нарушать Cross-Origin Resource Sharing (CORS).

RequestFilter

Объект, описывающий фильтры, применяемые к событиям webRequest.

Характеристики

  • tabId

    номер необязательно

  • типы

    ResourceType [] необязательно

    Список типов запросов. Запросы, не соответствующие ни одному из типов, будут отфильтрованы.

  • URL-адреса

    нить[]

    Список URL-адресов или шаблонов URL-адресов. Запросы, которые не соответствуют ни одному из URL-адресов, будут отфильтрованы.

  • windowId

    номер необязательно

ResourceType

Хром 44+

Перечисление

"main_frame"
Указывает ресурс как основной фрейм.

"sub_frame"
Определяет ресурс как подфрейм.

"таблица стилей"
Определяет ресурс как таблицу стилей.

"сценарий"
Определяет ресурс как скрипт.

"изображение"
Указывает ресурс как изображение.

"шрифт"
Определяет ресурс как шрифт.

"объект"
Определяет ресурс как объект.

"xmlhttprequest"
Указывает ресурс как XMLHttpRequest.

"пинг"
Указывает ресурс как пинг.

"csp_report"
Определяет ресурс как отчет политики безопасности контента (CSP).

"СМИ"
Определяет ресурс как медиа-объект.

"вебсокет"
Указывает ресурс как WebSocket.

"webbundle"
Указывает ресурс как WebBundle.

"другой"
Указывает ресурс как тип, не включенный в перечисленные типы.

UploadData

Содержит данные, загруженные в URL-запросе.

Характеристики

  • байты

    любой необязательный

    ArrayBuffer с копией данных.

  • файл

    строка необязательная

    Строка с путем и именем файла.

Характеристики

MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES

Максимальное количество вызовов handlerBehaviorChanged за 10-минутный интервал. handlerBehaviorChanged — это дорогостоящий вызов функции, который не следует вызывать часто.

Ценить

20

Методы

handlerBehaviorChanged()

chrome.webRequest.handlerBehaviorChanged(): Promise<void>

Необходимо вызывать при изменении поведения обработчиков webRequest, чтобы предотвратить некорректную обработку из-за кэширования. Вызов этой функции требует больших затрат. Не вызывайте её часто.

Возврат

  • Обещание<void>

    Хром 116+

События

onActionIgnored

Хром 70+
chrome.webRequest.onActionIgnored.addListener(
  callback: function,
)

Вызывается, когда предлагаемое расширением изменение сетевого запроса игнорируется. Это происходит в случае конфликтов с другими расширениями.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (details: object) => void

    • подробности

      объект

      • действие

        Предложенное действие было проигнорировано.

      • requestId

        нить

        Идентификатор запроса. Идентификаторы запросов уникальны в рамках сеанса браузера. Поэтому их можно использовать для связывания различных событий одного и того же запроса.

onAuthRequired

chrome.webRequest.onAuthRequired.addListener(
  callback: function,
  filter: RequestFilter,
  extraInfoSpec?: OnAuthRequiredOptions[],
)

Срабатывает при получении ошибки аутентификации. У прослушивателя есть три варианта: предоставить учётные данные аутентификации, отменить запрос и отобразить страницу с ошибкой или не предпринимать никаких действий по запросу. Если предоставлены неверные учётные данные пользователя, этот метод может быть вызван несколько раз для одного и того же запроса. Обратите внимание: в параметре extraInfoSpec необходимо указать только один из режимов 'blocking' или 'asyncBlocking' .

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (details: object, asyncCallback?: function) => BlockingResponse | undefined

    • подробности

      объект

      • претендент

        объект

        Сервер запрашивает аутентификацию.

        • хозяин

          нить

        • порт

          число

      • documentId

        нить

        Хром 106+

        UUID документа, отправившего запрос.

      • жизненный цикл документа
        Хром 106+

        Жизненный цикл документа.

      • frameId

        число

        Значение 0 указывает на то, что запрос выполняется в основном фрейме; положительное значение указывает идентификатор подфрейма, в котором выполняется запрос. Если загружен документ (под)фрейма ( typemain_frame или sub_frame ), frameId указывает идентификатор этого фрейма, а не идентификатор внешнего фрейма. Идентификаторы фреймов уникальны в пределах вкладки.

      • Хром 106+

        Тип фрейма, в котором произошел запрос.

      • инициатор

        строка необязательная

        Хром 63+

        Источник, откуда был инициирован запрос. Не изменяется при перенаправлениях. Если это непрозрачный источник, будет использована строка «null».

      • isProxy

        булев

        True для Proxy-Authenticate, false для WWW-Authenticate.

      • метод

        нить

        Стандартный метод HTTP.

      • parentDocumentId

        строка необязательная

        Хром 106+

        UUID родительского документа, которому принадлежит этот фрейм. Не устанавливается, если родительского документа нет.

      • parentFrameId

        число

        Идентификатор кадра, который является оболочкой кадра, отправившего запрос. Установите значение -1, если родительского кадра не существует.

      • область

        строка необязательная

        Область аутентификации, предоставляемая сервером, если таковая имеется.

      • requestId

        нить

        Идентификатор запроса. Идентификаторы запросов уникальны в рамках сеанса браузера. Поэтому их можно использовать для связывания различных событий одного и того же запроса.

      • responseHeaders

        HttpHeaders необязательны

        Заголовки HTTP-ответа, полученные вместе с этим ответом.

      • схема

        нить

        Схема аутентификации, например, Basic или Digest.

      • statusCode

        число

        Хром 43+

        Стандартный код статуса HTTP, возвращаемый сервером.

      • statusLine

        нить

        Строка статуса HTTP ответа или строка «HTTP/0.9 200 OK» для ответов HTTP/0.9 (т. е. ответов, в которых отсутствует строка статуса) или пустая строка, если заголовки отсутствуют.

      • tabId

        число

        Идентификатор вкладки, в которой выполнен запрос. Установите значение -1, если запрос не связан с вкладкой.

      • отметка времени

        число

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

      • тип

        Как будет использоваться запрошенный ресурс.

      • URL-адрес

        нить

    • asyncCallback

      функция необязательна

      Хром 58+

      Параметр asyncCallback выглядит так:

      (response: BlockingResponse) => void

    • возвращается

      BlockingResponse | не определено

      Если в параметре «extraInfoSpec» указано «блокирование», прослушиватель событий должен вернуть объект этого типа.

  • фильтр
  • extraInfoSpec

    OnAuthRequiredOptions [] необязательно

onBeforeRedirect

chrome.webRequest.onBeforeRedirect.addListener(
  callback: function,
  filter: RequestFilter,
  extraInfoSpec?: OnBeforeRedirectOptions[],
)

Срабатывает, когда сервер собирается перенаправить запрос.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (details: object) => void

    • подробности

      объект

      • documentId

        нить

        Хром 106+

        UUID документа, отправившего запрос.

      • жизненный цикл документа
        Хром 106+

        Жизненный цикл документа.

      • frameId

        число

        Значение 0 указывает на то, что запрос выполняется в основном фрейме; положительное значение указывает идентификатор подфрейма, в котором выполняется запрос. Если загружен документ (под)фрейма ( typemain_frame или sub_frame ), frameId указывает идентификатор этого фрейма, а не идентификатор внешнего фрейма. Идентификаторы фреймов уникальны в пределах вкладки.

      • Хром 106+

        Тип фрейма, в котором произошел запрос.

      • fromCache

        булев

        Указывает, был ли этот ответ извлечен из кэша диска.

      • инициатор

        строка необязательная

        Хром 63+

        Источник, откуда был инициирован запрос. Не изменяется при перенаправлениях. Если это непрозрачный источник, будет использована строка «null».

      • IP-адрес

        строка необязательная

        IP-адрес сервера, на который был отправлен запрос. Обратите внимание, что это может быть буквальный IPv6-адрес.

      • метод

        нить

        Стандартный метод HTTP.

      • parentDocumentId

        строка необязательная

        Хром 106+

        UUID родительского документа, которому принадлежит этот фрейм. Не устанавливается, если родительского документа нет.

      • parentFrameId

        число

        Идентификатор кадра, который является оболочкой кадра, отправившего запрос. Установите значение -1, если родительского кадра не существует.

      • redirectUrl

        нить

        Новый URL-адрес.

      • requestId

        нить

        Идентификатор запроса. Идентификаторы запросов уникальны в рамках сеанса браузера. Поэтому их можно использовать для связывания различных событий одного и того же запроса.

      • responseHeaders

        HttpHeaders необязательны

        Заголовки HTTP-ответа, полученные вместе с этим перенаправлением.

      • statusCode

        число

        Стандартный код статуса HTTP, возвращаемый сервером.

      • statusLine

        нить

        Строка статуса HTTP ответа или строка «HTTP/0.9 200 OK» для ответов HTTP/0.9 (т. е. ответов, в которых отсутствует строка статуса) или пустая строка, если заголовки отсутствуют.

      • tabId

        число

        Идентификатор вкладки, в которой выполнен запрос. Установите значение -1, если запрос не связан с вкладкой.

      • отметка времени

        число

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

      • тип

        Как будет использоваться запрошенный ресурс.

      • URL-адрес

        нить

  • фильтр
  • extraInfoSpec

    OnBeforeRedirectOptions [] необязательно

onBeforeRequest

chrome.webRequest.onBeforeRequest.addListener(
  callback: function,
  filter: RequestFilter,
  extraInfoSpec?: OnBeforeRequestOptions[],
)

Срабатывает, когда вот-вот должен произойти запрос.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (details: object) => BlockingResponse | undefined

    • подробности

      объект

      • documentId

        строка необязательная

        Хром 106+

        UUID документа, отправившего запрос.

      • жизненный цикл документа

        extensionTypes.DocumentLifecycle (необязательно)

        Хром 106+

        Жизненный цикл документа.

      • frameId

        число

        Значение 0 указывает на то, что запрос выполняется в основном фрейме; положительное значение указывает идентификатор подфрейма, в котором выполняется запрос. Если загружен документ (под)фрейма ( typemain_frame или sub_frame ), frameId указывает идентификатор этого фрейма, а не идентификатор внешнего фрейма. Идентификаторы фреймов уникальны в пределах вкладки.

      • frameType

        extensionTypes.FrameType необязательно

        Хром 106+

        Тип фрейма, в котором произошел запрос.

      • инициатор

        строка необязательная

        Хром 63+

        Источник, откуда был инициирован запрос. Не изменяется при перенаправлениях. Если это непрозрачный источник, будет использована строка «null».

      • метод

        нить

        Стандартный метод HTTP.

      • parentDocumentId

        строка необязательная

        Хром 106+

        UUID родительского документа, которому принадлежит этот фрейм. Не устанавливается, если родительского документа нет.

      • parentFrameId

        число

        Идентификатор кадра, который является оболочкой кадра, отправившего запрос. Установите значение -1, если родительского кадра не существует.

      • requestBody

        объект необязательный

        Содержит данные тела HTTP-запроса. Предоставляется только в том случае, если extraInfoSpec содержит «requestBody».

        • ошибка

          строка необязательная

          Ошибки при получении данных тела запроса.

        • formData

          объект необязательный

          Если метод запроса — POST, а тело запроса представляет собой последовательность пар «ключ-значение», закодированных в UTF8, в формате multipart/form-data или application/x-www-form-urlencoded, этот словарь присутствует и для каждого ключа содержит список всех его значений. Если данные имеют другой тип носителя или некорректны, словарь отсутствует. Пример значения этого словаря: {'key': ['value1', 'value2']}.

        • сырой

          UploadData [] необязательно

          Если метод запроса — PUT или POST, а тело еще не проанализировано в formData, то непроанализированные элементы тела запроса содержатся в этом массиве.

      • requestId

        нить

        Идентификатор запроса. Идентификаторы запросов уникальны в рамках сеанса браузера. Поэтому их можно использовать для связывания различных событий одного и того же запроса.

      • tabId

        число

        Идентификатор вкладки, в которой выполнен запрос. Установите значение -1, если запрос не связан с вкладкой.

      • отметка времени

        число

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

      • тип

        Как будет использоваться запрошенный ресурс.

      • URL-адрес

        нить

    • возвращается

      BlockingResponse | не определено

      Если в параметре «extraInfoSpec» указано «блокирование», прослушиватель событий должен вернуть объект этого типа.

  • фильтр
  • extraInfoSpec

    OnBeforeRequestOptions [] необязательно

onBeforeSendHeaders

chrome.webRequest.onBeforeSendHeaders.addListener(
  callback: function,
  filter: RequestFilter,
  extraInfoSpec?: OnBeforeSendHeadersOptions[],
)

Срабатывает перед отправкой HTTP-запроса, как только становятся доступны заголовки запроса. Это может произойти после установления TCP-соединения с сервером, но до отправки каких-либо HTTP-данных.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (details: object) => BlockingResponse | undefined

    • подробности

      объект

      • documentId

        нить

        Хром 106+

        UUID документа, отправившего запрос.

      • жизненный цикл документа
        Хром 106+

        Жизненный цикл документа.

      • frameId

        число

        Значение 0 указывает на то, что запрос выполняется в основном фрейме; положительное значение указывает идентификатор подфрейма, в котором выполняется запрос. Если загружен документ (под)фрейма ( typemain_frame или sub_frame ), frameId указывает идентификатор этого фрейма, а не идентификатор внешнего фрейма. Идентификаторы фреймов уникальны в пределах вкладки.

      • Хром 106+

        Тип фрейма, в котором произошел запрос.

      • инициатор

        строка необязательная

        Хром 63+

        Источник, откуда был инициирован запрос. Не изменяется при перенаправлениях. Если это непрозрачный источник, будет использована строка «null».

      • метод

        нить

        Стандартный метод HTTP.

      • parentDocumentId

        строка необязательная

        Хром 106+

        UUID родительского документа, которому принадлежит этот фрейм. Не устанавливается, если родительского документа нет.

      • parentFrameId

        число

        Идентификатор кадра, который является оболочкой кадра, отправившего запрос. Установите значение -1, если родительского кадра не существует.

      • requestHeaders

        HttpHeaders необязательны

        Заголовки HTTP-запроса, которые будут отправлены вместе с этим запросом.

      • requestId

        нить

        Идентификатор запроса. Идентификаторы запросов уникальны в рамках сеанса браузера. Поэтому их можно использовать для связывания различных событий одного и того же запроса.

      • tabId

        число

        Идентификатор вкладки, в которой выполнен запрос. Установите значение -1, если запрос не связан с вкладкой.

      • отметка времени

        число

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

      • тип

        Как будет использоваться запрошенный ресурс.

      • URL-адрес

        нить

    • возвращается

      BlockingResponse | не определено

      Если в параметре «extraInfoSpec» указано «блокирование», прослушиватель событий должен вернуть объект этого типа.

  • фильтр
  • extraInfoSpec

    OnBeforeSendHeadersOptions [] необязательно

onCompleted

chrome.webRequest.onCompleted.addListener(
  callback: function,
  filter: RequestFilter,
  extraInfoSpec?: OnCompletedOptions[],
)

Срабатывает после завершения запроса.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (details: object) => void

    • подробности

      объект

      • documentId

        нить

        Хром 106+

        UUID документа, отправившего запрос.

      • жизненный цикл документа
        Хром 106+

        Жизненный цикл документа.

      • frameId

        число

        Значение 0 указывает на то, что запрос выполняется в основном фрейме; положительное значение указывает идентификатор подфрейма, в котором выполняется запрос. Если загружен документ (под)фрейма ( typemain_frame или sub_frame ), frameId указывает идентификатор этого фрейма, а не идентификатор внешнего фрейма. Идентификаторы фреймов уникальны в пределах вкладки.

      • Хром 106+

        Тип фрейма, в котором произошел запрос.

      • fromCache

        булев

        Указывает, был ли этот ответ извлечен из кэша диска.

      • инициатор

        строка необязательная

        Хром 63+

        Источник, откуда был инициирован запрос. Не изменяется при перенаправлениях. Если это непрозрачный источник, будет использована строка «null».

      • IP-адрес

        строка необязательная

        IP-адрес сервера, на который был отправлен запрос. Обратите внимание, что это может быть буквальный IPv6-адрес.

      • метод

        нить

        Стандартный метод HTTP.

      • parentDocumentId

        строка необязательная

        Хром 106+

        UUID родительского документа, владеющего этим кадром. Это не установлено, если нет родителей.

      • ParentFrameid

        число

        Идентификатор кадры, который завершает кадр, который отправил запрос. Установите на -1, если не существует родительской кадры.

      • requestId

        нить

        Идентификатор запроса. Идентификаторы запросов уникальны в сеансе браузера. В результате они могут быть использованы для связи различных событий одного и того же запроса.

      • responseHeaders

        Httpheaders необязательно

        Заголовки ответов HTTP, которые были получены вместе с этим ответом.

      • statusCode

        число

        Стандартный код состояния HTTP возвращается сервером.

      • Статусная линия

        нить

        Строка состояния http ответа или строка «HTTP/0,9 200 OK 'для ответов HTTP/0,9 (то есть ответов, в которых отсутствует линия состояния) или пустая строка, если нет заголовков.

      • tabId

        число

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

      • отметка времени

        число

        Время, когда этот сигнал запускается, в миллисекундах со времен эпохи.

      • тип

        Как будет использоваться запрошенный ресурс.

      • URL-адрес

        нить

  • фильтр
  • reseanfospec

    OnCompleteDoptions [] Необязательно

onErrorOccurred

chrome.webRequest.onErrorOccurred.addListener(
  callback: function,
  filter: RequestFilter,
  extraInfoSpec?: OnErrorOccurredOptions[],
)

Выстрелил, когда возникает ошибка.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит как:

    (details: object) => void

    • подробности

      объект

      • documentId

        нить

        Хром 106+

        UUID документа, делающего запрос. Это значение не присутствует, если запрос является навигацией кадра.

      • Хром 106+

        Жизненный цикл, в котором находится документ.

      • ошибка

        нить

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

      • frameId

        число

        Значение 0 указывает, что запрос происходит в основной кадре; Положительное значение указывает на идентификатор подрамника, в которой происходит запрос. Если загружается документ (суб) кадра ( type is is main_frame или sub_frame ), frameId указывает идентификатор этого кадра, а не идентификатор внешнего кадра. Идентификаторы кадров уникальны на вкладке.

      • Хром 106+

        Тип кадра. Запрос произошел в.

      • FromCache

        булев

        Указывает, был ли этот ответ из -за кеша диска.

      • инициатор

        строка необязательная

        Хром 63+

        Происхождение, где был инициирован запрос. Это не меняется через перенаправления. Если это непрозрачное происхождение, будет использоваться строка «null».

      • IP-адрес

        строка необязательная

        IP -адрес сервера, на который был фактически отправлен запрос. Обратите внимание, что это может быть буквальный адрес IPv6.

      • метод

        нить

        Стандартный метод HTTP.

      • ParentDocumentid

        строка необязательная

        Хром 106+

        UUID родительского документа, владеющего этим кадром. Это не установлено, если нет родителей.

      • ParentFrameid

        число

        Идентификатор кадры, который завершает кадр, который отправил запрос. Установите на -1, если не существует родительской кадры.

      • requestId

        нить

        Идентификатор запроса. Идентификаторы запросов уникальны в сеансе браузера. В результате они могут быть использованы для связи различных событий одного и того же запроса.

      • tabId

        число

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

      • отметка времени

        число

        Время, когда этот сигнал запускается, в миллисекундах со времен эпохи.

      • тип

        Как будет использоваться запрошенный ресурс.

      • URL-адрес

        нить

  • фильтр
  • reseanfospec

    OnerRorOccurRedoptions [] Необязательно

onHeadersReceived

chrome.webRequest.onHeadersReceived.addListener(
  callback: function,
  filter: RequestFilter,
  extraInfoSpec?: OnHeadersReceivedOptions[],
)

Уволен, когда были получены заголовки ответов HTTP по запросу.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит как:

    (details: object) => BlockingResponse | undefined

    • подробности

      объект

      • documentId

        нить

        Хром 106+

        UUID документа, делающего запрос.

      • Хром 106+

        Жизненный цикл, в котором находится документ.

      • frameId

        число

        Значение 0 указывает, что запрос происходит в основной кадре; Положительное значение указывает на идентификатор подрамника, в которой происходит запрос. Если загружается документ (суб) кадра ( type is is main_frame или sub_frame ), frameId указывает идентификатор этого кадра, а не идентификатор внешнего кадра. Идентификаторы кадров уникальны на вкладке.

      • Хром 106+

        Тип кадра. Запрос произошел в.

      • инициатор

        строка необязательная

        Хром 63+

        Происхождение, где был инициирован запрос. Это не меняется через перенаправления. Если это непрозрачное происхождение, будет использоваться строка «null».

      • метод

        нить

        Стандартный метод HTTP.

      • ParentDocumentid

        строка необязательная

        Хром 106+

        UUID родительского документа, владеющего этим кадром. Это не установлено, если нет родителей.

      • ParentFrameid

        число

        Идентификатор кадры, который завершает кадр, который отправил запрос. Установите на -1, если не существует родительской кадры.

      • requestId

        нить

        Идентификатор запроса. Идентификаторы запросов уникальны в сеансе браузера. В результате они могут быть использованы для связи различных событий одного и того же запроса.

      • responseHeaders

        Httpheaders необязательно

        Заголовки ответов HTTP, которые были получены с этим ответом.

      • statusCode

        число

        Хром 43+

        Стандартный код состояния HTTP возвращается сервером.

      • Статусная линия

        нить

        Строка состояния http ответа или строка «HTTP/0,9 200 OK» для ответов HTTP/0,9 (то есть ответов, в которых отсутствует линия состояния).

      • tabId

        число

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

      • отметка времени

        число

        Время, когда этот сигнал запускается, в миллисекундах со времен эпохи.

      • тип

        Как будет использоваться запрошенный ресурс.

      • URL-адрес

        нить

    • возвращается

      Блокинг -ответ | не определен

      Если «блокировка» указана в параметре «Extrainfospec», слушатель событий должен вернуть объект этого типа.

  • фильтр
  • reseanfospec

    OneaderSreceivedOptions [] Необязательно

onResponseStarted

chrome.webRequest.onResponseStarted.addListener(
  callback: function,
  filter: RequestFilter,
  extraInfoSpec?: OnResponseStartedOptions[],
)

Уволен, когда получен первый байт тела ответа. Для HTTP -запросов это означает, что доступны заголовки статуса и заголовки ответов.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит как:

    (details: object) => void

    • подробности

      объект

      • documentId

        нить

        Хром 106+

        UUID документа, делающего запрос.

      • Хром 106+

        Жизненный цикл, в котором находится документ.

      • frameId

        число

        Значение 0 указывает, что запрос происходит в основной кадре; Положительное значение указывает на идентификатор подрамника, в которой происходит запрос. Если загружается документ (суб) кадра ( type is is main_frame или sub_frame ), frameId указывает идентификатор этого кадра, а не идентификатор внешнего кадра. Идентификаторы кадров уникальны на вкладке.

      • Хром 106+

        Тип кадра. Запрос произошел в.

      • FromCache

        булев

        Указывает, был ли этот ответ из -за кеша диска.

      • инициатор

        строка необязательная

        Хром 63+

        Происхождение, где был инициирован запрос. Это не меняется через перенаправления. Если это непрозрачное происхождение, будет использоваться строка «null».

      • IP-адрес

        строка необязательная

        IP -адрес сервера, на который был фактически отправлен запрос. Обратите внимание, что это может быть буквальный адрес IPv6.

      • метод

        нить

        Стандартный метод HTTP.

      • ParentDocumentid

        строка необязательная

        Хром 106+

        UUID родительского документа, владеющего этим кадром. Это не установлено, если нет родителей.

      • ParentFrameid

        число

        Идентификатор кадры, который завершает кадр, который отправил запрос. Установите на -1, если не существует родительской кадры.

      • requestId

        нить

        Идентификатор запроса. Идентификаторы запросов уникальны в сеансе браузера. В результате они могут быть использованы для связи различных событий одного и того же запроса.

      • responseHeaders

        Httpheaders необязательно

        Заголовки ответов HTTP, которые были получены вместе с этим ответом.

      • statusCode

        число

        Стандартный код состояния HTTP возвращается сервером.

      • Статусная линия

        нить

        Строка состояния http ответа или строка «HTTP/0,9 200 OK 'для ответов HTTP/0,9 (то есть ответов, в которых отсутствует линия состояния) или пустая строка, если нет заголовков.

      • tabId

        число

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

      • отметка времени

        число

        Время, когда этот сигнал запускается, в миллисекундах со времен эпохи.

      • тип

        Как будет использоваться запрошенный ресурс.

      • URL-адрес

        нить

  • фильтр
  • reseanfospec

    OnerSporsEStArtEdoptions [] Необязательно

onSendHeaders

chrome.webRequest.onSendHeaders.addListener(
  callback: function,
  filter: RequestFilter,
  extraInfoSpec?: OnSendHeadersOptions[],
)

Запускается непосредственно перед тем, как запрос будет отправлен на сервер (модификации предыдущих обратных вызовов Onbeforesendehders будут видны к моменту запуска Onsendheaders).

Параметры

  • перезвонить

    функция

    Параметр callback выглядит как:

    (details: object) => void

    • подробности

      объект

      • documentId

        нить

        Хром 106+

        UUID документа, делающего запрос.

      • Хром 106+

        Жизненный цикл, в котором находится документ.

      • frameId

        число

        Значение 0 указывает, что запрос происходит в основной кадре; Положительное значение указывает на идентификатор подрамника, в которой происходит запрос. Если загружается документ (суб) кадра ( type is is main_frame или sub_frame ), frameId указывает идентификатор этого кадра, а не идентификатор внешнего кадра. Идентификаторы кадров уникальны на вкладке.

      • Хром 106+

        Тип кадра. Запрос произошел в.

      • инициатор

        строка необязательная

        Хром 63+

        Происхождение, где был инициирован запрос. Это не меняется через перенаправления. Если это непрозрачное происхождение, будет использоваться строка «null».

      • метод

        нить

        Стандартный метод HTTP.

      • ParentDocumentid

        строка необязательная

        Хром 106+

        UUID родительского документа, владеющего этим кадром. Это не установлено, если нет родителей.

      • ParentFrameid

        число

        Идентификатор кадры, который завершает кадр, который отправил запрос. Установите на -1, если не существует родительской кадры.

      • Запрос головы

        Httpheaders необязательно

        Заголовки HTTP -запроса, которые были отправлены с помощью этого запроса.

      • requestId

        нить

        Идентификатор запроса. Идентификаторы запросов уникальны в сеансе браузера. В результате они могут быть использованы для связи различных событий одного и того же запроса.

      • tabId

        число

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

      • отметка времени

        число

        Время, когда этот сигнал запускается, в миллисекундах со времен эпохи.

      • тип

        Как будет использоваться запрошенный ресурс.

      • URL-адрес

        нить

  • фильтр
  • reseanfospec

    Onsendheadersoptions [] Необязательно