chrome.webRequest

Opis

Interfejs API chrome.webRequest umożliwia obserwowanie i analizę ruchu oraz przechwytywanie, blokowanie lub modyfikowanie przesyłanych żądań.

Uprawnienia

webRequest

Aby korzystać z interfejsu API żądania internetowego, musisz zadeklarować uprawnienia "webRequest" w pliku manifestu rozszerzenia oraz niezbędne uprawnienia hosta. Aby przechwycić żądanie zasobu podrzędnego, rozszerzenie musi mieć dostęp zarówno do żądanego adresu URL, jak i do jego inicjatora. Na przykład:

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

webRequestBlocking

Wymagane do zarejestrowania modułów obsługi zdarzeń blokujących. Od platformy Manifest V3 jest on dostępny tylko w przypadku rozszerzeń zainstalowanych zgodnie z zasadami.

webRequestAuthProvider

Wymagane do korzystania z metody onAuthRequired. Więcej informacji znajdziesz w sekcji Obsługa uwierzytelniania.

Pojęcia i zastosowanie

Cykl życia żądań

Interfejs API żądań sieciowych definiuje zbiór zdarzeń, które podążają za cyklem życia żądania sieciowego. Możesz ich używać do obserwowania i analizowania ruchu. Niektóre zdarzenia synchroniczne umożliwiają przechwytywanie, blokowanie lub modyfikowanie żądania.

Przedstawiamy cykl życia zdarzeń w przypadku udanych żądań, a po nich znajdują się definicje zdarzeń:

Cykl życia żądania sieciowego z perspektywy interfejsu webrequest API

onBeforeRequest (opcjonalnie synchroniczne)
Uruchamia się, gdy żądanie ma wkrótce wystąpić. To zdarzenie jest wysyłane przed nawiązaniem połączenia TCP i można go użyć do anulowania lub przekierowania żądań.
onBeforeSendHeaders (opcjonalnie synchroniczne)
Uruchamia się, gdy żądanie ma nastąpić i przygotowano początkowe nagłówki. To zdarzenie ma umożliwiać rozszerzeniom dodawanie, modyfikowanie i usuwanie nagłówków żądań (*). Zdarzenie onBeforeSendHeaders jest przekazywane do wszystkich subskrybentów, więc różni subskrybenci mogą próbować zmienić żądanie. Instrukcję obsługi znajdziesz w sekcji Szczegóły implementacji. Pozwala ono anulować prośbę.
onSendHeaders
Uruchamia się, gdy wszystkie rozszerzenia miały szansę zmodyfikować nagłówki żądań i wyświetla ostateczną wersję (*). Zdarzenie jest wywoływane przed przesłaniem nagłówków do sieci. To zdarzenie ma charakter informacyjny i jest obsługiwane asynchronicznie. Nie można modyfikować ani anulować żądania.
onHeadersReceived (opcjonalnie synchroniczne)
Uruchamia się za każdym razem, gdy zostanie odebrany nagłówek odpowiedzi HTTP(S). Ze względu na przekierowania i żądania uwierzytelnienia może się to zdarzyć kilka razy w ramach jednego żądania. To zdarzenie umożliwia rozszerzeniom dodawanie, modyfikowanie i usuwanie nagłówków odpowiedzi, takich jak przychodzące nagłówki Content-Type. Instrukcje buforowania są przetwarzane przed wywołaniem tego zdarzenia, więc modyfikowanie nagłówków, takich jak Cache-Control, nie ma wpływu na pamięć podręczną przeglądarki. Pozwala też anulować lub przekierować prośbę.
onAuthRequired (opcjonalnie synchroniczne)
Uruchamia się, gdy żądanie wymaga uwierzytelnienia użytkownika. To zdarzenie może być obsługiwane synchronicznie w celu dostarczenia danych uwierzytelniających. Pamiętaj, że rozszerzenia mogą podawać nieprawidłowe dane logowania. Uważaj, aby nie zapętlać się w nieskończonej pętli, podając wielokrotnie nieprawidłowe dane logowania. W ten sposób możesz też anulować prośbę.
onBeforeRedirect
Uruchamia się, gdy ma nastąpić przekierowanie. Przekierowywanie może być aktywowane przez kod odpowiedzi HTTP lub rozszerzenie. To zdarzenie ma charakter informacyjny i jest obsługiwane asynchronicznie. Nie można jej zmienić ani anulować.
onResponseStarted
Uruchamia się po odebraniu pierwszego bajtu treści odpowiedzi. W przypadku żądań HTTP oznacza to, że dostępny jest wiersz stanu i nagłówki odpowiedzi. To zdarzenie ma charakter informacyjny i jest obsługiwane asynchronicznie. Nie pozwala na modyfikowanie ani anulowanie żądania.
onCompleted
Uruchamia się po przetworzeniu żądania.
onErrorOccurred
Uruchamia się, gdy nie udało się przetworzyć żądania.

Interfejs API żądania sieciowego gwarantuje, że dla każdego żądania uruchamiane jest zdarzenie onCompleted lub onErrorOccurred, z jednym wyjątkiem: jeśli żądanie zostanie przekierowane na adres URL data://, ostatnim zgłoszonym zdarzeniem jest onBeforeRedirect.

* Pamiętaj, że interfejs API żądań sieciowych prezentuje rozszerzeniu abstrakcyjny stos sieci. Jedno żądanie adresu URL można podzielić na kilka żądań HTTP (np. aby pobrać poszczególne zakresy bajtów z dużego pliku) lub wykonać je przez stos sieci bez komunikowania się z siecią. Z tego powodu interfejs API nie podaje ostatecznych nagłówków HTTP wysyłanych do sieci. Na przykład wszystkie nagłówki związane z zapisywaniem w pamięci podręcznej są dla rozszerzenia niewidoczne.

Następujące nagłówki nie są obecnie podawane w zdarzeniu onBeforeSendHeaders. Nie możemy zagwarantować, że ta lista będzie kompletna ani stabilna.

  • Upoważnienie
  • Cache-Control
  • Połączenie
  • Content-Length
  • Host
  • Jeśli-zmodyfikowano-od
  • Jeśli-brak dopasowania
  • Zakres argumentu
  • Częściowe dane
  • Pragma
  • Proxy-Authorization
  • Połączenie z serwerem proxy
  • Kodowanie transferu

Od Chrome 79 modyfikacje nagłówka żądania wpływają na kontrole CORS. Jeśli zmodyfikowane nagłówki żądań z innych domen nie spełniają kryteriów, spowoduje to wysłanie procesu wstępnego CORS z pytaniem do serwera, czy nagłówki mogą zostać zaakceptowane. Jeśli naprawdę musisz zmienić nagłówki w sposób naruszający protokół CORS, musisz podać 'extraHeaders' w elemencie opt_extraInfoSpec. Z drugiej strony modyfikacje nagłówków odpowiedzi nie służą do oszukiwania kontroli CORS. Jeśli musisz oszukać protokół CORS, musisz też podać 'extraHeaders' w przypadku modyfikacji odpowiedzi.

Od Chrome w wersji 79 interfejs API webRequest nie przechwytuje domyślnie żądań i odpowiedzi wstępnych CORS. Proces wstępny CORS dla adresu URL żądania jest widoczny dla rozszerzenia, jeśli istnieje odbiornik z parametrem 'extraHeaders' określonym w polu opt_extraInfoSpec adresu URL żądania. onBeforeRequest może też pobrać plik 'extraHeaders' z Chrome 79.

Począwszy od Chrome 79 ten nagłówek żądania nie jest dostępny i nie można go zmodyfikować ani usunąć bez określenia 'extraHeaders' w opt_extraInfoSpec:

  • Punkt początkowy

Począwszy od Chrome 72, jeśli musisz zmodyfikować odpowiedzi, zanim funkcja Cross Origin Read Blokowanie (CORB) będzie mogła zablokować odpowiedź, musisz określić 'extraHeaders' w polu opt_extraInfoSpec.

Począwszy od Chrome 72 te nagłówki żądań nie są dostarczane i nie można ich modyfikować ani usuwać bez określenia 'extraHeaders' w opt_extraInfoSpec:

  • Accept-Language (Akceptuj język)
  • Akceptuj kodowanie
  • Strona odsyłająca
  • Plik cookie

Począwszy od Chrome 72 nagłówek odpowiedzi Set-Cookie nie jest dostarczany i nie można go zmodyfikować ani usunąć bez określenia 'extraHeaders' w elemencie opt_extraInfoSpec.

Począwszy od Chrome 89 nie można skutecznie zmodyfikować ani usunąć nagłówka odpowiedzi X-Frame-Options bez określenia parametru 'extraHeaders' w komponencie opt_extraInfoSpec.

Interfejs webRequest API ujawnia tylko te żądania, do których rozszerzenie ma uprawnienia do wyświetlania, biorąc pod uwagę swoje uprawnienia hosta. Ponadto dostępne są tylko te schematy: http://, https://, ftp://, file://, ws:// (od Chrome 58), wss:// (od Chrome 58), urn: (od Chrome 91) i chrome-extension://. Dodatkowo nawet niektóre żądania z adresami URL korzystającymi z jednego z powyższych schematów są ukryte. Obejmują one żądania chrome-extension://other_extension_id, w których other_extension_id nie jest identyfikatorem rozszerzenia obsługującego żądanie, https://www.google.com/chrome i inne poufne żądania, których podstawą działania są funkcje przeglądarki. Synchroniczne żądania XMLHttpRequest z rozszerzenia nie blokują modułów obsługi zdarzeń, aby zapobiegać zakleszczeniu. Pamiętaj, że w przypadku niektórych obsługiwanych schematów zbiór dostępnych zdarzeń może być ograniczony ze względu na charakter odpowiedniego protokołu. Na przykład w przypadku tego pliku: schemat można wysłać tylko onBeforeRequest, onResponseStarted, onCompleted i onErrorOccurred.

Począwszy od Chrome 58 interfejs API webRequest obsługuje przechwytywanie żądania uzgadniania połączenia WebSocket. Ponieważ uzgadnianie połączenia jest realizowane za pomocą żądania uaktualnienia HTTP, przepływ pracy pasuje do modelu webRequest zorientowanego na HTTP. Pamiętaj, że interfejs API nie przechwytuje:

  • Poszczególne wiadomości wysyłane przez ustanowione połączenie WebSocket.
  • WebSocket zamyka połączenie.

Przekierowania nie są obsługiwane w przypadku żądań WebSocket.

Począwszy od Chrome 72 rozszerzenie będzie mogło przechwytywać żądanie tylko wtedy, gdy ma uprawnienia hosta zarówno do żądanego adresu URL, jak i do inicjatora żądania.

Od Chrome 96 interfejs API webRequest obsługuje przechwytywanie informacji WebTransport przez żądanie uzgadniania połączenia HTTP/3. Ponieważ uzgadnianie połączenia jest realizowane za pomocą żądania połączenia HTTP, jego przepływ pasuje do modelu żądania webRequest zorientowanego na HTTP. Uwaga:

  • Po zainicjowaniu sesji rozszerzenia nie mogą jej obserwować ani interweniować za pomocą interfejsu webRequest API.
  • Modyfikowanie nagłówków żądań HTTP w pliku onBeforeSendHeaders jest ignorowane.
  • Przekierowania i uwierzytelnianie nie są obsługiwane w WebTransport przez HTTP/3.

Identyfikatory żądań

Każde żądanie jest identyfikowane przez identyfikator. Ten identyfikator jest unikalny w ramach sesji przeglądarki i w kontekście rozszerzenia. Ta wartość pozostaje stała w trakcie cyklu życia żądania i można jej używać do dopasowywania zdarzeń w przypadku tego samego żądania. Pamiętaj, że kilka żądań HTTP jest mapowanych na jedno żądanie internetowe w przypadku przekierowania HTTP lub uwierzytelniania HTTP.

Rejestrowanie detektorów zdarzeń

Aby zarejestrować detektor zdarzeń na potrzeby żądania internetowego, użyj wariantu zwykłej funkcji addListener(). Oprócz określenia funkcji wywołania zwrotnego musisz podać argument filtra i możesz podać opcjonalny dodatkowy argument info.

Trzy argumenty funkcji addListener() interfejsu API żądania sieciowego mają te definicje:

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

Oto przykład nasłuchiwania zdarzenia onBeforeRequest:

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

Każde wywołanie addListener() przyjmuje obowiązkową funkcję wywołania zwrotnego jako pierwszy parametr. Ta funkcja wywołania zwrotnego jest przekazywana do słownika zawierającego informacje o bieżącym żądaniu adresu URL. Informacje w tym słowniku zależą od typu zdarzenia oraz zawartości opt_extraInfoSpec.

Jeśli opcjonalna tablica opt_extraInfoSpec zawiera ciąg znaków 'blocking' (dozwolony tylko w przypadku określonych zdarzeń), funkcja wywołania zwrotnego jest obsługiwana synchronicznie. Oznacza to, że żądanie jest blokowane do czasu zwrócenia funkcji wywołania zwrotnego. W takim przypadku wywołanie zwrotne może zwrócić kod webRequest.BlockingResponse, który określa dalszy cykl życia żądania. W zależności od kontekstu ta odpowiedź umożliwia anulowanie lub przekierowanie żądania (onBeforeRequest), anulowanie żądania lub modyfikowanie nagłówków (onBeforeSendHeaders, onHeadersReceived), a także anulowanie żądania lub podanie danych uwierzytelniających (onAuthRequired).

Jeśli zamiast tego opcjonalna tablica opt_extraInfoSpec zawiera ciąg 'asyncBlocking' (dozwolone tylko w przypadku onAuthRequired), rozszerzenie może wygenerować webRequest.BlockingResponse asynchronicznie.

Element filter webRequest.RequestFilter pozwala ograniczyć liczbę żądań, w przypadku których zdarzenia są wywoływane w różnych wymiarach:

Adresy URL
Wzorce adresów URL, np. *://www.google.com/foo*bar.
Typy
Typy żądań, na przykład main_frame (dokument, który jest wczytywany w ramce najwyższego poziomu), sub_frame (dokument, który jest ładowany w przypadku umieszczonej ramki) i image (obraz na stronie internetowej). Zobacz webRequest.RequestFilter.
Identyfikator karty
Identyfikator jednej karty.
Identyfikator okna
Identyfikator okna.

W zależności od typu zdarzenia możesz określić w żądaniu opt_extraInfoSpec ciągi tekstowe, które będą prosić o dodatkowe informacje o żądaniu. Służy do podawania szczegółowych informacji o danych żądania tylko wtedy, gdy o to wyraźnie poprosisz.

Obsługa uwierzytelniania

Aby obsługiwać żądania uwierzytelniania HTTP, dodaj do pliku manifestu uprawnienie "webRequestAuthProvider":

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

Pamiętaj, że to uprawnienie nie jest wymagane w przypadku rozszerzenia zainstalowanego w ramach zasad z uprawnieniem "webRequestBlocking".

Aby synchronicznie podawać dane logowania:

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

Aby asynchronicznie podać dane logowania:

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

Szczegóły implementacji

Podczas tworzenia rozszerzenia korzystającego z interfejsu API żądań sieciowych trzeba wziąć pod uwagę kilka szczegółów implementacji:

web_accessible_resources

Gdy rozszerzenie używa interfejsów API webRequest do przekierowywania żądania zasobu publicznego do zasobu niedostępnego z internetu, jest ono blokowane i powoduje błąd. Powyższa zasada obowiązuje nawet wtedy, gdy zasób, który nie jest dostępny z internetu, należy do rozszerzenia przekierowującego. Aby zadeklarować zasoby do użycia z interfejsami API deklarativeWebRequest, w pliku manifestu należy zadeklarować i wypełnić tablica "web_accessible_resources" w sposób opisany tutaj.

Rozwiązanie konfliktu

W obecnej implementacji interfejsu API żądań sieciowych żądanie jest uznawane za anulowane, jeśli co najmniej 1 rozszerzenie poprosi o jego anulowanie. Jeśli rozszerzenie anuluje prośbę, wszystkie rozszerzenia zostaną powiadomione zdarzeniem onErrorOccurred. Tylko jedno rozszerzenie może jednocześnie przekierować żądanie lub zmodyfikować nagłówek. Jeśli więcej niż jedno rozszerzenie próbuje zmodyfikować żądanie, wygrywa ono, które zostało zainstalowane ostatnio, a wszystkie pozostałe są ignorowane. Rozszerzenie nie jest powiadamiane, jeśli jego instrukcja zmiany lub przekierowania została zignorowana.

Zapisywanie w pamięci podręcznej

Chrome wykorzystuje dwie pamięci podręczne – jedną na dysku i bardzo szybką w pamięci. Czas życia pamięci podręcznej jest powiązany z czasem trwania procesu renderowania, który w przybliżeniu odpowiada karcie. Żądania, na które odpowiedzi są udzielane z pamięci podręcznej, są niewidoczne dla interfejsu API żądań sieciowych. Jeśli moduł obsługi żądań zmieni swoje działanie (np. sposób blokowania żądań), proste odświeżenie strony może go nie uwzględnić. Aby mieć pewność, że zmiana działania zostanie zastosowana, wywołaj handlerBehaviorChanged() w celu opróżnienia pamięci podręcznej. Ale nie rób tego zbyt często. Wyczyszczenie pamięci podręcznej jest bardzo kosztowne. Po zarejestrowaniu lub wyrejestrowaniu detektora nie musisz już wywoływać funkcji handlerBehaviorChanged().

Sygnatury czasowe

Właściwość timestamp zdarzeń żądania internetowego jest gwarantowana tylko wewnętrznie spójna. Porównanie jednego zdarzenia do innego pozwoli uzyskać właściwą przesunięcie między nimi, ale porównanie ich z bieżącym czasem w rozszerzeniu (np. za pomocą funkcji (new Date()).getTime()) może przynieść nieoczekiwane efekty.

Obsługa błędów

Przy próbie zarejestrowania zdarzenia z nieprawidłowymi argumentami spowoduje to zgłoszenie błędu JavaScriptu, a moduł obsługi zdarzeń nie zostanie zarejestrowany. Jeśli podczas obsługi zdarzenia zostanie zgłoszony błąd lub moduł obsługi zdarzeń zwróci nieprawidłową odpowiedź blokującą, w konsoli rozszerzenia zostanie zarejestrowany komunikat o błędzie, a moduł obsługi tego żądania zostanie zignorowany.

Przykłady

Ten przykład pokazuje, jak blokować wszystkie żądania wysyłane do www.evil.com:

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

Ta funkcja korzysta z modułu obsługi zdarzeń blokujących, więc wymaga uprawnienia "webRequest" oraz "webRequestBlocking" w pliku manifestu.

Ten przykład pozwala osiągnąć ten sam cel w bardziej wydajny sposób, ponieważ żądania, które nie są kierowane na element www.evil.com, nie muszą być przekazywane do rozszerzenia:

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

Poniższy przykład pokazuje, jak usunąć nagłówek User-Agent ze wszystkich żądań:

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"]
);

Aby wypróbować interfejs API chrome.webRequest, zainstaluj przykładowy żądania webRequest z repozytorium chrome-extension-samples.

Typy

BlockingResponse

Zwraca wartość modułów obsługi zdarzeń, w których zastosowano parametr „blocking” extraInfoSpec. Umożliwia modułowi obsługi zdarzeń modyfikowanie żądań sieciowych.

Właściwości

  • authCredentials

    obiekt opcjonalnie

    Używane tylko jako odpowiedź na zdarzenie onAuthRequired. Jeśli zasada jest skonfigurowana, żądanie jest wysyłane przy użyciu podanych danych logowania.

    • hasło

      string,

    • nazwa użytkownika

      string,

  • anuluj

    wartość logiczna opcjonalna

    Jeśli ma wartość prawda, żądanie jest anulowane. Uniemożliwia to wysłanie prośby. Można jej używać jako odpowiedzi na zdarzenia onBeforeRequest, onBeforeSendHeaders, onHeadersReceived i onAuthRequired.

  • redirectUrl

    ciąg znaków opcjonalny

    Używana tylko jako odpowiedź na zdarzenia onBeforeRequest i onHeadersReceived. Jeśli zasada jest skonfigurowana, nie można wysłać ani zrealizować pierwotnego żądania, a zamiast tego zostanie przekierowane na podany adres URL. Dozwolone są przekierowania do schematów innych niż HTTP, takich jak data:. Przekierowania zainicjowane przez działanie przekierowujące korzystają z pierwotnej metody żądania w przypadku przekierowania, z jednym wyjątkiem: jeśli przekierowanie zostało zainicjowane na etapie onHeadersReceived, przekierowanie jest wykonywane przy użyciu metody GET. Przekierowania z adresów URL o schematach ws:// i wss://ignorowane.

  • requestHeaders

    HttpHeaders opcjonalnie

    Używana tylko w odpowiedzi na zdarzenie onBeforeSendHeaders. Jeśli zasada jest skonfigurowana, żądanie jest wysyłane z tymi nagłówkami.

  • responseHeaders

    HttpHeaders opcjonalnie

    Jest używana tylko w odpowiedzi na zdarzenie onHeadersReceived. Jeśli zasada jest skonfigurowana, przyjmuje się, że serwer wysyłał odpowiedzi z tymi nagłówkami. Zwracaj wartość responseHeaders tylko wtedy, gdy naprawdę chcesz zmodyfikować nagłówki, aby ograniczyć liczbę konfliktów (tylko jedno rozszerzenie może zmodyfikować responseHeaders w każdym żądaniu).

FormDataItem

Chrome 66 i nowsze wersje

Zawiera dane przekazywane w ramach danych formularza. W przypadku formatu z adresem URL jest on przechowywany jako ciąg znaków, jeśli dane są ciągiem utf-8, a w przeciwnym razie jako tablica Buffer. W przypadku danych formularzy jest to ArrayBuffer. Jeśli dane formularza reprezentują przesyłanie pliku, są to ciąg znaków z nazwą pliku (o ile została podana jego nazwa).

Enum

ArrayBuffer

string,

HttpHeaders

Tablica nagłówków HTTP. Każdy nagłówek jest przedstawiany jako słownik zawierający klucze name oraz value lub binaryValue.

Typ

obiekt[]

Właściwości

  • binaryValue

    number[] opcjonalny

    Wartość nagłówka HTTP, jeśli nie może być reprezentowana w formacie UTF-8, przechowywana w postaci pojedynczych wartości bajtowych (0..255).

  • nazwa

    string,

    Nazwa nagłówka HTTP.

  • value

    ciąg znaków opcjonalny

    Wartość nagłówka HTTP, jeśli może być reprezentowany w formacie UTF-8.

IgnoredActionType

Chrome 70 i nowsze wersje

Enum

"redirect"

"request_headers"

"response_headers"

"auth_credentials"

OnAuthRequiredOptions

Chrome 44 i nowsze wersje

Enum

"responseHeaders"
Określa, że do zdarzenia mają zostać dołączone nagłówki odpowiedzi.

"blocking"
Określa, że żądanie jest blokowane do czasu zwrócenia funkcji wywołania zwrotnego.

"asyncBlock"
Określa, że funkcja wywołania zwrotnego jest obsługiwana asynchronicznie.

"extraHeaders"
Określa, że nagłówki mogą naruszać udostępnianie zasobów między serwerami (CORS).

OnBeforeRedirectOptions

Chrome 44 i nowsze wersje

Enum

"responseHeaders"
Określa, że do zdarzenia mają zostać dołączone nagłówki odpowiedzi.

"extraHeaders"
Określa, że nagłówki mogą naruszać udostępnianie zasobów między serwerami (CORS).

OnBeforeRequestOptions

Chrome 44 i nowsze wersje

Enum

"blocking"
Określa, że żądanie jest blokowane do czasu zwrócenia funkcji wywołania zwrotnego.

"requestBody"
Określa, że treść żądania powinna być uwzględniona w zdarzeniu.

"extraHeaders"
Określa, że nagłówki mogą naruszać udostępnianie zasobów między serwerami (CORS).

OnBeforeSendHeadersOptions

Chrome 44 i nowsze wersje

Enum

"requestHeaders"
Określa, że do zdarzenia powinien zostać dołączony nagłówek żądania.

"blocking"
Określa, że żądanie jest blokowane do czasu zwrócenia funkcji wywołania zwrotnego.

"extraHeaders"
Określa, że nagłówki mogą naruszać udostępnianie zasobów między serwerami (CORS).

OnCompletedOptions

Chrome 44 i nowsze wersje

Enum

"responseHeaders"
Określa, że do zdarzenia mają zostać dołączone nagłówki odpowiedzi.

"extraHeaders"
Określa, że nagłówki mogą naruszać udostępnianie zasobów między serwerami (CORS).

OnErrorOccurredOptions

Chrome 79 i nowsze

Wartość

"extraHeaders"

OnHeadersReceivedOptions

Chrome 44 i nowsze wersje

Enum

"blocking"
Określa, że żądanie jest blokowane do czasu zwrócenia funkcji wywołania zwrotnego.

"responseHeaders"
Określa, że do zdarzenia mają zostać dołączone nagłówki odpowiedzi.

"extraHeaders"
Określa, że nagłówki mogą naruszać udostępnianie zasobów między serwerami (CORS).

OnResponseStartedOptions

Chrome 44 i nowsze wersje

Enum

"responseHeaders"
Określa, że do zdarzenia mają zostać dołączone nagłówki odpowiedzi.

"extraHeaders"
Określa, że nagłówki mogą naruszać udostępnianie zasobów między serwerami (CORS).

OnSendHeadersOptions

Chrome 44 i nowsze wersje

Enum

"requestHeaders"
Określa, że do zdarzenia powinien zostać dołączony nagłówek żądania.

"extraHeaders"
Określa, że nagłówki mogą naruszać udostępnianie zasobów między serwerami (CORS).

RequestFilter

Obiekt opisujący filtry, które mają być stosowane do zdarzeń webRequest.

Właściwości

  • tabId

    Liczba opcjonalnie

  • typy

    ResourceType[] opcjonalny

    Lista typów żądań. Żądania, które nie pasują do żadnego typu, zostaną odfiltrowane.

  • urls

    string[]

    Lista adresów URL lub wzorców adresów URL. Żądania, które nie pasują do żadnego z adresów URL, zostaną odfiltrowane.

  • windowId

    Liczba opcjonalnie

ResourceType

Chrome 44 i nowsze wersje

Enum

"main_frame"
Określa zasób jako klatkę główną.

"sub_frame"
Określa zasób jako ramkę podrzędną.

"stylesheet"
Określa zasób jako arkusz stylów.

"script"
Określa zasób jako skrypt.

"image"
Określa zasób jako obraz.

"font"
Określa zasób jako czcionkę.

"object"
Określa zasób jako obiekt.

"xmlhttprequest"
Określa zasób jako XMLHttpRequest.

"ping"
Określa zasób jako ping.

"csp_report"
Określa zasób jako raport Content Security Policy (CSP).

"media"
Określa zasób jako obiekt multimedialny.

"websocket"
Określa zasób jako WebSocket.

"webbundle"
Określa zasób jako WebBundle.

"other"
Określa zasób jako typ, którego nie ma na liście typów.

UploadData

Zawiera dane przesłane w żądaniu adresu URL.

Właściwości

  • B

    dowolne opcjonalne

    tablica Buffer z kopią danych;

  • plik

    ciąg znaków opcjonalny

    Ciąg tekstowy zawierający ścieżkę i nazwę pliku.

Właściwości

MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES

Maksymalna liczba wywołań funkcji handlerBehaviorChanged w ciągu 10 minut nieprzerwanego interwału. handlerBehaviorChanged to kosztowne wywołanie funkcji, które nie powinno być często wywoływane.

Wartość

20

Metody

handlerBehaviorChanged()

Obietnica
chrome.webRequest.handlerBehaviorChanged(
  callback?: function,
)

Trzeba go wywoływać, gdy działanie modułów webRequest uległo zmianie, aby zapobiec nieprawidłowej obsłudze spowodowanej buforowaniem. To wywołanie funkcji jest drogie. Nie powtarzaj tego często.

Parametry

  • wywołanie zwrotne

    funkcja opcjonalnie

    Parametr callback wygląda tak:

    ()=>void

Akcje powrotne

  • Promise<void>

    Chrome 116 i nowsze wersje

    Obietnice są obsługiwane w platformie Manifest V3 i nowszych, ale wywołania zwrotne są dostępne na potrzeby zgodności wstecznej. Nie można użyć obu w tym samym wywołaniu funkcji. Obietnica znika z tym samym typem, który jest przekazywany do wywołania zwrotnego.

Wydarzenia

onActionIgnored

Chrome 70 i nowsze wersje
chrome.webRequest.onActionIgnored.addListener(
  callback: function,
)

Uruchamiane, gdy proponowana przez rozszerzenie modyfikacja w żądaniu sieciowym jest ignorowana. Dzieje się tak w przypadku konfliktów z innymi rozszerzeniami.

Parametry

  • wywołanie zwrotne

    funkcja

    Parametr callback wygląda tak:

    (details: object)=>void

    • szczegóły

      obiekt

      • działanie

        Proponowane działanie, które zostało zignorowane.

      • requestId

        string,

        Identyfikator żądania. Identyfikatory żądań są unikalne w obrębie sesji przeglądarki. Oznacza to, że mogą one służyć do powiązania różnych zdarzeń związanych z tą samą prośbą.

onAuthRequired

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

Uruchamiane po otrzymaniu błędu uwierzytelniania. Detektor ma 3 opcje: może podać dane uwierzytelniające, anulować żądanie i wyświetlić stronę błędu lub nie wykonać żadnego działania w wyzwaniu. Jeśli podasz błędne dane logowania użytkownika, to żądanie może zostać wywołane wiele razy dla tego samego żądania. Pamiętaj, że w parametrze extraInfoSpec można określić tylko jeden z trybów 'blocking' lub 'asyncBlocking'.

Parametry

  • wywołanie zwrotne

    funkcja

    Parametr callback wygląda tak:

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

    • szczegóły

      obiekt

      • rywal

        obiekt

        Serwer żądający uwierzytelnienia.

        • organizator

          string,

        • port

          Liczba

      • documentId

        string,

        Chrome 106 i nowsze wersje

        Identyfikator UUID dokumentu wysyłającego żądanie.

      • Chrome 106 i nowsze wersje

        Cykl życia dokumentu.

      • frameId

        Liczba

        Wartość 0 oznacza, że żądanie jest wysyłane w ramce głównej, a wartość dodatnia wskazuje identyfikator ramki podrzędnej, w której żądanie jest wysyłane. Jeśli wczytany jest dokument (elementu podrzędnego) (type to main_frame lub sub_frame), wartość frameId wskazuje identyfikator tej ramki, a nie identyfikator ramki zewnętrznej. Identyfikatory klatek są unikalne w obrębie karty.

      • Chrome 106 i nowsze wersje

        Typ klatki, w której wystąpiło żądanie.

      • inicjator

        ciąg znaków opcjonalny

        Chrome w wersji 63 i nowszych

        Źródło, z którego zainicjowano żądanie. Nie zmienia się w wyniku przekierowania. Jeśli źródło jest nieprzezroczyste, zostanie użyty ciąg „null”.

      • isProxy

        boolean

        Prawda dla Proxy-Authenticate, false dla WWW-Authenticate.

      • method

        string,

        Standardowa metoda HTTP.

      • parentDocumentId

        ciąg znaków opcjonalny

        Chrome 106 i nowsze wersje

        Identyfikator UUID dokumentu nadrzędnego, do którego należy ta ramka. Ta wartość nie jest ustawiona, jeśli nie ma elementu nadrzędnego.

      • parentFrameId

        Liczba

        Identyfikator ramki, która opakowuje ramkę, która wysłała żądanie. Jeśli nie istnieje ramka nadrzędna, ustaw wartość -1.

      • obszar

        ciąg znaków opcjonalny

        Obszar uwierzytelniania udostępniony przez serwer (jeśli istnieje).

      • requestId

        string,

        Identyfikator żądania. Identyfikatory żądań są unikalne w obrębie sesji przeglądarki. Oznacza to, że mogą one służyć do powiązania różnych zdarzeń związanych z tą samą prośbą.

      • responseHeaders

        HttpHeaders opcjonalnie

        Nagłówki odpowiedzi HTTP otrzymane wraz z tą odpowiedzią.

      • schemat

        string,

        Schemat uwierzytelniania, np. Podstawowe lub Podsumowanie.

      • statusCode

        Liczba

        Chrome 43 i nowsze wersje

        Standardowy kod stanu HTTP zwracany przez serwer.

      • statusLine

        string,

        Wiersz stanu HTTP odpowiedzi lub ciąg „HTTP/0.9 200 OK” w przypadku odpowiedzi HTTP/0.9 (tj. odpowiedzi bez wiersza stanu) lub pusty ciąg znaków, jeśli nie ma nagłówków.

      • tabId

        Liczba

        Identyfikator karty, na której występuje żądanie. Jeśli żądanie nie jest związane z kartą, ustaw wartość -1.

      • timeStamp

        Liczba

        Czas wywołania tego sygnału w milisekundach od początku epoki.

      • Sposób wykorzystania żądanego zasobu.

      • URL

        string,

    • asyncCallback

      funkcja opcjonalnie

      Chrome w wersji 58 i nowszych

      Parametr asyncCallback wygląda tak:

      (response: BlockingResponse)=>void

    • returns

      BlockingResponse|undefined (niezdefiniowana)

      Jeśli parametr „extraInfoSpec” określił „blokowanie”, detektor zdarzeń powinien zwracać obiekt tego typu.

  • filter
  • extraInfoSpec

    OnAuthRequiredOptions[] opcjonalnie

onBeforeRedirect

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

Uruchamiane, gdy zbliża się przekierowanie inicjowane przez serwer.

Parametry

  • wywołanie zwrotne

    funkcja

    Parametr callback wygląda tak:

    (details: object)=>void

    • szczegóły

      obiekt

      • documentId

        string,

        Chrome 106 i nowsze wersje

        Identyfikator UUID dokumentu wysyłającego żądanie.

      • Chrome 106 i nowsze wersje

        Cykl życia dokumentu.

      • frameId

        Liczba

        Wartość 0 oznacza, że żądanie jest wysyłane w ramce głównej, a wartość dodatnia wskazuje identyfikator ramki podrzędnej, w której żądanie jest wysyłane. Jeśli wczytany jest dokument (elementu podrzędnego) (type to main_frame lub sub_frame), wartość frameId wskazuje identyfikator tej ramki, a nie identyfikator ramki zewnętrznej. Identyfikatory klatek są unikalne w obrębie karty.

      • Chrome 106 i nowsze wersje

        Typ klatki, w której wystąpiło żądanie.

      • fromCache

        boolean

        Wskazuje, czy ta odpowiedź została pobrana z pamięci podręcznej dysku.

      • inicjator

        ciąg znaków opcjonalny

        Chrome w wersji 63 i nowszych

        Źródło, z którego zainicjowano żądanie. Nie zmienia się w wyniku przekierowania. Jeśli źródło jest nieprzezroczyste, zostanie użyty ciąg „null”.

      • ip

        ciąg znaków opcjonalny

        Adres IP serwera, na który żądanie zostało rzeczywiście wysłane. Pamiętaj, że może to być dosłowny adres IPv6.

      • method

        string,

        Standardowa metoda HTTP.

      • parentDocumentId

        ciąg znaków opcjonalny

        Chrome 106 i nowsze wersje

        Identyfikator UUID dokumentu nadrzędnego, do którego należy ta ramka. Ta wartość nie jest ustawiona, jeśli nie ma elementu nadrzędnego.

      • parentFrameId

        Liczba

        Identyfikator ramki, która opakowuje ramkę, która wysłała żądanie. Jeśli nie istnieje ramka nadrzędna, ustaw wartość -1.

      • redirectUrl

        string,

        Nowy adres URL.

      • requestId

        string,

        Identyfikator żądania. Identyfikatory żądań są unikalne w obrębie sesji przeglądarki. Oznacza to, że mogą one służyć do powiązania różnych zdarzeń związanych z tą samą prośbą.

      • responseHeaders

        HttpHeaders opcjonalnie

        Nagłówki odpowiedzi HTTP otrzymane wraz z tym przekierowaniem.

      • statusCode

        Liczba

        Standardowy kod stanu HTTP zwracany przez serwer.

      • statusLine

        string,

        Wiersz stanu HTTP odpowiedzi lub ciąg „HTTP/0.9 200 OK” w przypadku odpowiedzi HTTP/0.9 (tj. odpowiedzi bez wiersza stanu) lub pusty ciąg znaków, jeśli nie ma nagłówków.

      • tabId

        Liczba

        Identyfikator karty, na której występuje żądanie. Jeśli żądanie nie jest związane z kartą, ustaw wartość -1.

      • timeStamp

        Liczba

        Czas wywołania tego sygnału w milisekundach od początku epoki.

      • Sposób wykorzystania żądanego zasobu.

      • URL

        string,

  • filter
  • extraInfoSpec

onBeforeRequest

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

Uruchamiane, gdy żądanie ma wkrótce wystąpić.

Parametry

  • wywołanie zwrotne

    funkcja

    Parametr callback wygląda tak:

    (details: object)=>BlockingResponse|undefined

    • szczegóły

      obiekt

      • documentId

        ciąg znaków opcjonalny

        Chrome 106 i nowsze wersje

        Identyfikator UUID dokumentu wysyłającego żądanie.

      • documentLifecycle
        Chrome 106 i nowsze wersje

        Cykl życia dokumentu.

      • frameId

        Liczba

        Wartość 0 oznacza, że żądanie jest wysyłane w ramce głównej, a wartość dodatnia wskazuje identyfikator ramki podrzędnej, w której żądanie jest wysyłane. Jeśli wczytany jest dokument (elementu podrzędnego) (type to main_frame lub sub_frame), wartość frameId wskazuje identyfikator tej ramki, a nie identyfikator ramki zewnętrznej. Identyfikatory klatek są unikalne w obrębie karty.

      • frameType
        Chrome 106 i nowsze wersje

        Typ klatki, w której wystąpiło żądanie.

      • inicjator

        ciąg znaków opcjonalny

        Chrome w wersji 63 i nowszych

        Źródło, z którego zainicjowano żądanie. Nie zmienia się w wyniku przekierowania. Jeśli źródło jest nieprzezroczyste, zostanie użyty ciąg „null”.

      • method

        string,

        Standardowa metoda HTTP.

      • parentDocumentId

        ciąg znaków opcjonalny

        Chrome 106 i nowsze wersje

        Identyfikator UUID dokumentu nadrzędnego, do którego należy ta ramka. Ta wartość nie jest ustawiona, jeśli nie ma elementu nadrzędnego.

      • parentFrameId

        Liczba

        Identyfikator ramki, która opakowuje ramkę, która wysłała żądanie. Jeśli nie istnieje ramka nadrzędna, ustaw wartość -1.

      • requestBody

        obiekt opcjonalnie

        Zawiera dane treści żądania HTTP. Stosowane tylko wtedy, gdy element extraInfoSpec zawiera element „requestBody”.

        • error

          ciąg znaków opcjonalny

          Błędy podczas uzyskiwania danych treści żądania.

        • formData

          obiekt opcjonalnie

          Jeśli metodą żądania jest POST, a treść to sekwencja par klucz-wartość zakodowane w UTF8, zakodowane jako wieloczęściowe/dane-formularzy lub application/x-www-form-urlencoded, słownik jest dostępny, a każdy klucz zawiera listę wszystkich wartości danego klucza. Jeśli dane są innego typu lub mają nieprawidłowy format, słownik nie jest dostępny. Przykładowa wartość w tym słowniku to {'klucz': ['wartość1', 'wartość2']}.

        • nieprzetworzony

          UploadData[] opcjonalnie

          Jeśli metodą żądania jest PUT lub POST, a treść nie jest jeszcze analizowana w formData, tablica ta zawiera nieprzeanalizowane elementy treści żądania.

      • requestId

        string,

        Identyfikator żądania. Identyfikatory żądań są unikalne w obrębie sesji przeglądarki. Oznacza to, że mogą one służyć do powiązania różnych zdarzeń związanych z tą samą prośbą.

      • tabId

        Liczba

        Identyfikator karty, na której występuje żądanie. Jeśli żądanie nie jest związane z kartą, ustaw wartość -1.

      • timeStamp

        Liczba

        Czas wywołania tego sygnału w milisekundach od początku epoki.

      • Sposób wykorzystania żądanego zasobu.

      • URL

        string,

    • returns

      BlockingResponse|undefined (niezdefiniowana)

      Jeśli parametr „extraInfoSpec” określił „blokowanie”, detektor zdarzeń powinien zwracać obiekt tego typu.

  • filter
  • extraInfoSpec

    OnBeforeRequestOptions[] opcjonalnie

onBeforeSendHeaders

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

Uruchamiane przed wysłaniem żądania HTTP, gdy nagłówki żądań są dostępne. Może się to zdarzyć po nawiązaniu połączenia TCP z serwerem, ale przed wysłaniem jakichkolwiek danych HTTP.

Parametry

  • wywołanie zwrotne

    funkcja

    Parametr callback wygląda tak:

    (details: object)=>BlockingResponse|undefined

    • szczegóły

      obiekt

      • documentId

        string,

        Chrome 106 i nowsze wersje

        Identyfikator UUID dokumentu wysyłającego żądanie.

      • Chrome 106 i nowsze wersje

        Cykl życia dokumentu.

      • frameId

        Liczba

        Wartość 0 oznacza, że żądanie jest wysyłane w ramce głównej, a wartość dodatnia wskazuje identyfikator ramki podrzędnej, w której żądanie jest wysyłane. Jeśli wczytany jest dokument (elementu podrzędnego) (type to main_frame lub sub_frame), wartość frameId wskazuje identyfikator tej ramki, a nie identyfikator ramki zewnętrznej. Identyfikatory klatek są unikalne w obrębie karty.

      • Chrome 106 i nowsze wersje

        Typ klatki, w której wystąpiło żądanie.

      • inicjator

        ciąg znaków opcjonalny

        Chrome w wersji 63 i nowszych

        Źródło, z którego zainicjowano żądanie. Nie zmienia się w wyniku przekierowania. Jeśli źródło jest nieprzezroczyste, zostanie użyty ciąg „null”.

      • method

        string,

        Standardowa metoda HTTP.

      • parentDocumentId

        ciąg znaków opcjonalny

        Chrome 106 i nowsze wersje

        Identyfikator UUID dokumentu nadrzędnego, do którego należy ta ramka. Ta wartość nie jest ustawiona, jeśli nie ma elementu nadrzędnego.

      • parentFrameId

        Liczba

        Identyfikator ramki, która opakowuje ramkę, która wysłała żądanie. Jeśli nie istnieje ramka nadrzędna, ustaw wartość -1.

      • requestHeaders

        HttpHeaders opcjonalnie

        Nagłówki żądań HTTP, które będą wysyłane z tym żądaniem.

      • requestId

        string,

        Identyfikator żądania. Identyfikatory żądań są unikalne w obrębie sesji przeglądarki. Oznacza to, że mogą one służyć do powiązania różnych zdarzeń związanych z tą samą prośbą.

      • tabId

        Liczba

        Identyfikator karty, na której występuje żądanie. Jeśli żądanie nie jest związane z kartą, ustaw wartość -1.

      • timeStamp

        Liczba

        Czas wywołania tego sygnału w milisekundach od początku epoki.

      • Sposób wykorzystania żądanego zasobu.

      • URL

        string,

    • returns

      BlockingResponse|undefined (niezdefiniowana)

      Jeśli parametr „extraInfoSpec” określił „blokowanie”, detektor zdarzeń powinien zwracać obiekt tego typu.

  • filter
  • extraInfoSpec

onCompleted

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

Uruchamiane po ukończeniu żądania.

Parametry

  • wywołanie zwrotne

    funkcja

    Parametr callback wygląda tak:

    (details: object)=>void

    • szczegóły

      obiekt

      • documentId

        string,

        Chrome 106 i nowsze wersje

        Identyfikator UUID dokumentu wysyłającego żądanie.

      • Chrome 106 i nowsze wersje

        Cykl życia dokumentu.

      • frameId

        Liczba

        Wartość 0 oznacza, że żądanie jest wysyłane w ramce głównej, a wartość dodatnia wskazuje identyfikator ramki podrzędnej, w której żądanie jest wysyłane. Jeśli wczytany jest dokument (elementu podrzędnego) (type to main_frame lub sub_frame), wartość frameId wskazuje identyfikator tej ramki, a nie identyfikator ramki zewnętrznej. Identyfikatory klatek są unikalne w obrębie karty.

      • Chrome 106 i nowsze wersje

        Typ klatki, w której wystąpiło żądanie.

      • fromCache

        boolean

        Wskazuje, czy ta odpowiedź została pobrana z pamięci podręcznej dysku.

      • inicjator

        ciąg znaków opcjonalny

        Chrome w wersji 63 i nowszych

        Źródło, z którego zainicjowano żądanie. Nie zmienia się w wyniku przekierowania. Jeśli źródło jest nieprzezroczyste, zostanie użyty ciąg „null”.

      • ip

        ciąg znaków opcjonalny

        Adres IP serwera, na który żądanie zostało rzeczywiście wysłane. Pamiętaj, że może to być dosłowny adres IPv6.

      • method

        string,

        Standardowa metoda HTTP.

      • parentDocumentId

        ciąg znaków opcjonalny

        Chrome 106 i nowsze wersje

        Identyfikator UUID dokumentu nadrzędnego, do którego należy ta ramka. Ta wartość nie jest ustawiona, jeśli nie ma elementu nadrzędnego.

      • parentFrameId

        Liczba

        Identyfikator ramki, która opakowuje ramkę, która wysłała żądanie. Jeśli nie istnieje ramka nadrzędna, ustaw wartość -1.

      • requestId

        string,

        Identyfikator żądania. Identyfikatory żądań są unikalne w obrębie sesji przeglądarki. Oznacza to, że mogą one służyć do powiązania różnych zdarzeń związanych z tą samą prośbą.

      • responseHeaders

        HttpHeaders opcjonalnie

        Nagłówki odpowiedzi HTTP otrzymane wraz z tą odpowiedzią.

      • statusCode

        Liczba

        Standardowy kod stanu HTTP zwracany przez serwer.

      • statusLine

        string,

        Wiersz stanu HTTP odpowiedzi lub ciąg „HTTP/0.9 200 OK” w przypadku odpowiedzi HTTP/0.9 (tj. odpowiedzi bez wiersza stanu) lub pusty ciąg znaków, jeśli nie ma nagłówków.

      • tabId

        Liczba

        Identyfikator karty, na której występuje żądanie. Jeśli żądanie nie jest związane z kartą, ustaw wartość -1.

      • timeStamp

        Liczba

        Czas wywołania tego sygnału w milisekundach od początku epoki.

      • Sposób wykorzystania żądanego zasobu.

      • URL

        string,

  • filter
  • extraInfoSpec

    OnCompletedOptions[] opcjonalnie

onErrorOccurred

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

Uruchamiane, gdy wystąpi błąd.

Parametry

  • wywołanie zwrotne

    funkcja

    Parametr callback wygląda tak:

    (details: object)=>void

    • szczegóły

      obiekt

      • documentId

        string,

        Chrome 106 i nowsze wersje

        Identyfikator UUID dokumentu wysyłającego żądanie. Ta wartość nie jest dostępna, jeśli żądanie dotyczy nawigacji w ramce.

      • Chrome 106 i nowsze wersje

        Cykl życia dokumentu.

      • error

        string,

        Opis błędu. Nie ma gwarancji, że ten ciąg znaków będzie zgodny wstecznie między wersjami. Nie wolno analizować jej treści ani podejmować działań na jej podstawie.

      • frameId

        Liczba

        Wartość 0 oznacza, że żądanie jest wysyłane w ramce głównej, a wartość dodatnia wskazuje identyfikator ramki podrzędnej, w której żądanie jest wysyłane. Jeśli wczytany jest dokument (elementu podrzędnego) (type to main_frame lub sub_frame), wartość frameId wskazuje identyfikator tej ramki, a nie identyfikator ramki zewnętrznej. Identyfikatory klatek są unikalne w obrębie karty.

      • Chrome 106 i nowsze wersje

        Typ klatki, w której wystąpiło żądanie.

      • fromCache

        boolean

        Wskazuje, czy ta odpowiedź została pobrana z pamięci podręcznej dysku.

      • inicjator

        ciąg znaków opcjonalny

        Chrome w wersji 63 i nowszych

        Źródło, z którego zainicjowano żądanie. Nie zmienia się w wyniku przekierowania. Jeśli źródło jest nieprzezroczyste, zostanie użyty ciąg „null”.

      • ip

        ciąg znaków opcjonalny

        Adres IP serwera, na który żądanie zostało rzeczywiście wysłane. Pamiętaj, że może to być dosłowny adres IPv6.

      • method

        string,

        Standardowa metoda HTTP.

      • parentDocumentId

        ciąg znaków opcjonalny

        Chrome 106 i nowsze wersje

        Identyfikator UUID dokumentu nadrzędnego, do którego należy ta ramka. Ta wartość nie jest ustawiona, jeśli nie ma elementu nadrzędnego.

      • parentFrameId

        Liczba

        Identyfikator ramki, która opakowuje ramkę, która wysłała żądanie. Jeśli nie istnieje ramka nadrzędna, ustaw wartość -1.

      • requestId

        string,

        Identyfikator żądania. Identyfikatory żądań są unikalne w obrębie sesji przeglądarki. Oznacza to, że mogą one służyć do powiązania różnych zdarzeń związanych z tą samą prośbą.

      • tabId

        Liczba

        Identyfikator karty, na której występuje żądanie. Jeśli żądanie nie jest związane z kartą, ustaw wartość -1.

      • timeStamp

        Liczba

        Czas wywołania tego sygnału w milisekundach od początku epoki.

      • Sposób wykorzystania żądanego zasobu.

      • URL

        string,

  • filter
  • extraInfoSpec

onHeadersReceived

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

Uruchamiane po odebraniu nagłówków odpowiedzi HTTP żądania.

Parametry

  • wywołanie zwrotne

    funkcja

    Parametr callback wygląda tak:

    (details: object)=>BlockingResponse|undefined

    • szczegóły

      obiekt

      • documentId

        string,

        Chrome 106 i nowsze wersje

        Identyfikator UUID dokumentu wysyłającego żądanie.

      • Chrome 106 i nowsze wersje

        Cykl życia dokumentu.

      • frameId

        Liczba

        Wartość 0 oznacza, że żądanie jest wysyłane w ramce głównej, a wartość dodatnia wskazuje identyfikator ramki podrzędnej, w której żądanie jest wysyłane. Jeśli wczytany jest dokument (elementu podrzędnego) (type to main_frame lub sub_frame), wartość frameId wskazuje identyfikator tej ramki, a nie identyfikator ramki zewnętrznej. Identyfikatory klatek są unikalne w obrębie karty.

      • Chrome 106 i nowsze wersje

        Typ klatki, w której wystąpiło żądanie.

      • inicjator

        ciąg znaków opcjonalny

        Chrome w wersji 63 i nowszych

        Źródło, z którego zainicjowano żądanie. Nie zmienia się w wyniku przekierowania. Jeśli źródło jest nieprzezroczyste, zostanie użyty ciąg „null”.

      • method

        string,

        Standardowa metoda HTTP.

      • parentDocumentId

        ciąg znaków opcjonalny

        Chrome 106 i nowsze wersje

        Identyfikator UUID dokumentu nadrzędnego, do którego należy ta ramka. Ta wartość nie jest ustawiona, jeśli nie ma elementu nadrzędnego.

      • parentFrameId

        Liczba

        Identyfikator ramki, która opakowuje ramkę, która wysłała żądanie. Jeśli nie istnieje ramka nadrzędna, ustaw wartość -1.

      • requestId

        string,

        Identyfikator żądania. Identyfikatory żądań są unikalne w obrębie sesji przeglądarki. Oznacza to, że mogą one służyć do powiązania różnych zdarzeń związanych z tą samą prośbą.

      • responseHeaders

        HttpHeaders opcjonalnie

        Nagłówki odpowiedzi HTTP, które zostały odebrane z tą odpowiedzią.

      • statusCode

        Liczba

        Chrome 43 i nowsze wersje

        Standardowy kod stanu HTTP zwracany przez serwer.

      • statusLine

        string,

        Wiersz stanu HTTP odpowiedzi lub ciąg „HTTP/0.9 200 OK” w przypadku odpowiedzi HTTP/0.9 (tj. odpowiedzi bez wiersza stanu).

      • tabId

        Liczba

        Identyfikator karty, na której występuje żądanie. Jeśli żądanie nie jest związane z kartą, ustaw wartość -1.

      • timeStamp

        Liczba

        Czas wywołania tego sygnału w milisekundach od początku epoki.

      • Sposób wykorzystania żądanego zasobu.

      • URL

        string,

    • returns

      BlockingResponse|undefined (niezdefiniowana)

      Jeśli parametr „extraInfoSpec” określił „blokowanie”, detektor zdarzeń powinien zwracać obiekt tego typu.

  • filter
  • extraInfoSpec

onResponseStarted

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

Uruchamiane po otrzymaniu pierwszego bajtu treści odpowiedzi. W przypadku żądań HTTP oznacza to, że dostępny jest wiersz stanu i nagłówki odpowiedzi.

Parametry

  • wywołanie zwrotne

    funkcja

    Parametr callback wygląda tak:

    (details: object)=>void

    • szczegóły

      obiekt

      • documentId

        string,

        Chrome 106 i nowsze wersje

        Identyfikator UUID dokumentu wysyłającego żądanie.

      • Chrome 106 i nowsze wersje

        Cykl życia dokumentu.

      • frameId

        Liczba

        Wartość 0 oznacza, że żądanie jest wysyłane w ramce głównej, a wartość dodatnia wskazuje identyfikator ramki podrzędnej, w której żądanie jest wysyłane. Jeśli wczytany jest dokument (elementu podrzędnego) (type to main_frame lub sub_frame), wartość frameId wskazuje identyfikator tej ramki, a nie identyfikator ramki zewnętrznej. Identyfikatory klatek są unikalne w obrębie karty.

      • Chrome 106 i nowsze wersje

        Typ klatki, w której wystąpiło żądanie.

      • fromCache

        boolean

        Wskazuje, czy ta odpowiedź została pobrana z pamięci podręcznej dysku.

      • inicjator

        ciąg znaków opcjonalny

        Chrome w wersji 63 i nowszych

        Źródło, z którego zainicjowano żądanie. Nie zmienia się w wyniku przekierowania. Jeśli źródło jest nieprzezroczyste, zostanie użyty ciąg „null”.

      • ip

        ciąg znaków opcjonalny

        Adres IP serwera, na który żądanie zostało rzeczywiście wysłane. Pamiętaj, że może to być dosłowny adres IPv6.

      • method

        string,

        Standardowa metoda HTTP.

      • parentDocumentId

        ciąg znaków opcjonalny

        Chrome 106 i nowsze wersje

        Identyfikator UUID dokumentu nadrzędnego, do którego należy ta ramka. Ta wartość nie jest ustawiona, jeśli nie ma elementu nadrzędnego.

      • parentFrameId

        Liczba

        Identyfikator ramki, która opakowuje ramkę, która wysłała żądanie. Jeśli nie istnieje ramka nadrzędna, ustaw wartość -1.

      • requestId

        string,

        Identyfikator żądania. Identyfikatory żądań są unikalne w obrębie sesji przeglądarki. Oznacza to, że mogą one służyć do powiązania różnych zdarzeń związanych z tą samą prośbą.

      • responseHeaders

        HttpHeaders opcjonalnie

        Nagłówki odpowiedzi HTTP otrzymane wraz z tą odpowiedzią.

      • statusCode

        Liczba

        Standardowy kod stanu HTTP zwracany przez serwer.

      • statusLine

        string,

        Wiersz stanu HTTP odpowiedzi lub ciąg „HTTP/0.9 200 OK” w przypadku odpowiedzi HTTP/0.9 (tj. odpowiedzi bez wiersza stanu) lub pusty ciąg znaków, jeśli nie ma nagłówków.

      • tabId

        Liczba

        Identyfikator karty, na której występuje żądanie. Jeśli żądanie nie jest związane z kartą, ustaw wartość -1.

      • timeStamp

        Liczba

        Czas wywołania tego sygnału w milisekundach od początku epoki.

      • Sposób wykorzystania żądanego zasobu.

      • URL

        string,

  • filter
  • extraInfoSpec

onSendHeaders

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

Uruchamiane tuż przed wysłaniem żądania do serwera (zmiany poprzednich wywołań zwrotnych onBeforeSendHeaders są widoczne dopiero po uruchomieniu funkcji onSendHeaders).

Parametry

  • wywołanie zwrotne

    funkcja

    Parametr callback wygląda tak:

    (details: object)=>void

    • szczegóły

      obiekt

      • documentId

        string,

        Chrome 106 i nowsze wersje

        Identyfikator UUID dokumentu wysyłającego żądanie.

      • Chrome 106 i nowsze wersje

        Cykl życia dokumentu.

      • frameId

        Liczba

        Wartość 0 oznacza, że żądanie jest wysyłane w ramce głównej, a wartość dodatnia wskazuje identyfikator ramki podrzędnej, w której żądanie jest wysyłane. Jeśli wczytany jest dokument (elementu podrzędnego) (type to main_frame lub sub_frame), wartość frameId wskazuje identyfikator tej ramki, a nie identyfikator ramki zewnętrznej. Identyfikatory klatek są unikalne w obrębie karty.

      • Chrome 106 i nowsze wersje

        Typ klatki, w której wystąpiło żądanie.

      • inicjator

        ciąg znaków opcjonalny

        Chrome w wersji 63 i nowszych

        Źródło, z którego zainicjowano żądanie. Nie zmienia się w wyniku przekierowania. Jeśli źródło jest nieprzezroczyste, zostanie użyty ciąg „null”.

      • method

        string,

        Standardowa metoda HTTP.

      • parentDocumentId

        ciąg znaków opcjonalny

        Chrome 106 i nowsze wersje

        Identyfikator UUID dokumentu nadrzędnego, do którego należy ta ramka. Ta wartość nie jest ustawiona, jeśli nie ma elementu nadrzędnego.

      • parentFrameId

        Liczba

        Identyfikator ramki, która opakowuje ramkę, która wysłała żądanie. Jeśli nie istnieje ramka nadrzędna, ustaw wartość -1.

      • requestHeaders

        HttpHeaders opcjonalnie

        Nagłówki żądań HTTP, które zostały wysłane z tym żądaniem.

      • requestId

        string,

        Identyfikator żądania. Identyfikatory żądań są unikalne w obrębie sesji przeglądarki. Oznacza to, że mogą one służyć do powiązania różnych zdarzeń związanych z tą samą prośbą.

      • tabId

        Liczba

        Identyfikator karty, na której występuje żądanie. Jeśli żądanie nie jest związane z kartą, ustaw wartość -1.

      • timeStamp

        Liczba

        Czas wywołania tego sygnału w milisekundach od początku epoki.

      • Sposób wykorzystania żądanego zasobu.

      • URL

        string,

  • filter
  • extraInfoSpec

    OnSendHeadersOptions[] opcjonalnie.