Opis
Użyj interfejsu chrome.webRequest
API, aby obserwować i analizować ruch oraz przechwytywać, blokować lub modyfikować żądania w trakcie przesyłania.
Uprawnienia
webRequest
Aby używać interfejsu Web Request API, musisz zadeklarować uprawnienie "webRequest"
w manifeście rozszerzenia wraz z niezbędnymi uprawnieniami dotyczącymi 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 rejestrowania modułów obsługi zdarzeń blokujących. Od wersji Manifest V3 jest to dostępne tylko w przypadku rozszerzeń zainstalowanych na podstawie zasad.
webRequestAuthProvider
Wymagane do użycia metody onAuthRequired
. Zobacz Obsługa uwierzytelniania.
Pojęcia i zastosowanie
Cykl życia żądań
Interfejs Web Request API definiuje zestaw zdarzeń, które następują po sobie w cyklu życia żądania internetowego. Możesz używać tych zdarzeń do obserwowania i analizowania ruchu. Niektóre zdarzenia synchroniczne umożliwiają przechwytywanie, blokowanie lub modyfikowanie żądania.
Cykl życia zdarzenia w przypadku żądań zakończonych powodzeniem przedstawiono poniżej, a następnie podano definicje zdarzeń:
onBeforeRequest
(opcjonalnie synchroniczne)- Uruchamiane, gdy ma nastąpić wysłanie żądania. To zdarzenie jest wysyłane przed nawiązaniem połączenia TCP i może służyć do anulowania lub przekierowywania żądań.
onBeforeSendHeaders
(opcjonalnie synchroniczne)- Uruchamia się, gdy ma nastąpić wysłanie żądania i przygotowane zostały nagłówki początkowe. 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ć modyfikować żądanie. W sekcji Szczegóły implementacji znajdziesz informacje o tym, jak to jest obsługiwane. To zdarzenie może służyć do anulowania prośby. onSendHeaders
- Wywoływane po tym, jak wszystkie rozszerzenia zmodyfikują nagłówki żądania. Zawiera ostateczną wersję (*). Zdarzenie jest wywoływane przed wysłaniem nagłówków do sieci. To zdarzenie ma charakter informacyjny i jest obsługiwane asynchronicznie. Nie można jej modyfikować ani anulować.
onHeadersReceived
(opcjonalnie synchroniczne)- Uruchamia się za każdym razem, gdy zostanie odebrany nagłówek odpowiedzi HTTP(S). Ze względu na przekierowania i żądania uwierzytelniania może się to zdarzyć wielokrotnie w przypadku jednego żądania. To zdarzenie umożliwia rozszerzeniom dodawanie, modyfikowanie i usuwanie nagłówków odpowiedzi, takich jak przychodzące nagłówki Content-Type. Dyrektywy 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. Umożliwia też anulowanie lub przekierowanie żądania.
onAuthRequired
(opcjonalnie synchroniczne)- Występuje, gdy żądanie wymaga uwierzytelnienia użytkownika. To zdarzenie może być obsługiwane synchronicznie, aby dostarczać dane uwierzytelniające. Pamiętaj, że rozszerzenia mogą podawać nieprawidłowe dane logowania. Uważaj, aby nie wpaść w nieskończoną pętlę, wielokrotnie podając nieprawidłowe dane logowania. Możesz też użyć tej opcji, aby anulować prośbę.
onBeforeRedirect
- Wywoływane, gdy ma nastąpić przekierowanie. Przekierowanie może być wywołane przez kod odpowiedzi HTTP lub przez rozszerzenie. To zdarzenie ma charakter informacyjny i jest obsługiwane asynchronicznie. Nie możesz modyfikować ani anulować prośby.
onResponseStarted
- Wywoływane, gdy zostanie odebrany pierwszy bajt treści odpowiedzi. W przypadku żądań HTTP oznacza to, że dostępne są wiersz stanu i nagłówki odpowiedzi. To zdarzenie ma charakter informacyjny i jest obsługiwane asynchronicznie. Nie można jej modyfikować ani anulować.
onCompleted
- Wywoływany, gdy żądanie zostało przetworzone.
onErrorOccurred
- Wywoływane, gdy nie udało się przetworzyć żądania.
Interfejs Web Request API gwarantuje, że w przypadku każdego żądania jako zdarzenie końcowe zostanie wywołane zdarzenie onCompleted
lub onErrorOccurred
. Wyjątkiem jest sytuacja, w której żądanie zostanie przekierowane na adres URL data://
. W takim przypadku ostatnim zgłoszonym zdarzeniem będzie onBeforeRedirect
.
* Pamiętaj, że interfejs API żądań internetowych przedstawia rozszerzeniu abstrakcję stosu sieciowego. Wewnętrznie jedno żądanie adresu URL może zostać podzielone na kilka żądań HTTP (np. w celu pobrania poszczególnych zakresów bajtów z dużego pliku) lub może być obsługiwane przez stos sieciowy bez komunikacji z siecią. Z tego powodu interfejs API nie udostępnia końcowych nagłówków HTTP, które są wysyłane do sieci. Na przykład wszystkie nagłówki związane z pamięcią podręczną są niewidoczne dla rozszerzenia.
Te nagłówki nie są obecnie przekazywane do zdarzenia onBeforeSendHeaders
. Nie gwarantujemy, że ta lista jest kompletna lub stabilna.
- Autoryzacja
- Cache-Control
- Połączenie
- Content-Length
- Host
- If-Modified-Since
- If-None-Match
- If-Range
- Partial-Data
- Pragma
- Proxy-Authorization
- Proxy-Connection
- Transfer-Encoding
Od Chrome 79 modyfikacje nagłówka żądania wpływają na sprawdzanie współdzielenia zasobów między serwerami z różnych domen (CORS). Jeśli zmodyfikowane nagłówki żądań dotyczących zasobów z innej domeny nie spełniają kryteriów, spowoduje to wysłanie procesu wstępnego CORS z pytaniem do serwera, czy takie nagłówki mogą zostać zaakceptowane. Jeśli musisz zmodyfikować nagłówki w sposób naruszający protokół CORS, musisz określić 'extraHeaders'
w opt_extraInfoSpec
. Z drugiej strony modyfikacje nagłówków odpowiedzi nie działają w przypadku oszukiwania sprawdzania CORS. Jeśli chcesz oszukać protokół CORS, musisz też określić 'extraHeaders'
w przypadku modyfikacji odpowiedzi.
Od Chrome w wersji 79 interfejs webRequest nie przechwytuje domyślnie żądań wstępnych CORS ani odpowiedzi na nie. Proces wstępny CORS dla adresu URL żądania jest widoczny dla rozszerzenia, jeśli w przypadku tego adresu URL istnieje odbiornik z wartością 'extraHeaders'
określoną w parametrze opt_extraInfoSpec
.
onBeforeRequest
może też pobierać 'extraHeaders'
z Chrome 79.
Od Chrome 79 ten nagłówek żądania nie jest podawany i nie można go modyfikować ani usuwać bez określenia 'extraHeaders'
w opt_extraInfoSpec
:
- Punkt początkowy
Od Chrome 72, jeśli chcesz modyfikować odpowiedzi, zanim Cross Origin Read Blocking (CORB) zablokuje odpowiedź, musisz określić 'extraHeaders'
w opt_extraInfoSpec
.
Od Chrome 72 te nagłówki żądań nie są udostępniane i nie można ich modyfikować ani usuwać bez określenia 'extraHeaders'
w opt_extraInfoSpec
:
- Accept-Language
- Accept-Encoding
- Referer
- Plik cookie
Od Chrome 72 nagłówek odpowiedzi Set-Cookie
nie jest podawany i nie można go modyfikować ani usuwać bez określenia 'extraHeaders'
w opt_extraInfoSpec
.
Od Chrome 89 nie można skutecznie modyfikować ani usuwać nagłówka odpowiedzi X-Frame-Options
bez określenia 'extraHeaders'
w opt_extraInfoSpec
.
Interfejs webRequest API udostępnia tylko żądania, które rozszerzenie ma uprawnienia do wyświetlania na podstawie uprawnień hosta. Ponadto dostępne są tylko te schematy: http://
, https://
, ftp://
, file://
, ws://
(od Chrome 58), wss://
(od Chrome 58), urn:
(od Chrome 91) lub chrome-extension://
. Ponadto ukrywane są nawet niektóre żądania z adresami URL korzystającymi z jednego z powyższych schematów. Obejmują one chrome-extension://other_extension_id
, gdzie other_extension_id
nie jest identyfikatorem rozszerzenia, które ma obsłużyć żądanie, https://www.google.com/chrome
i inne wrażliwe żądania związane z podstawowymi funkcjami przeglądarki. Synchroniczne żądania XMLHttpRequests z rozszerzenia są też ukrywane przed blokującymi modułami obsługi zdarzeń, aby zapobiec zakleszczeniom. Pamiętaj, że w przypadku niektórych obsługiwanych schematów zestaw dostępnych zdarzeń może być ograniczony ze względu na charakter odpowiedniego protokołu. Na przykład w przypadku schematu pliku można wysyłać tylko onBeforeRequest
, onResponseStarted
, onCompleted
i onErrorOccurred
.
Od Chrome 58 interfejs webRequest API obsługuje przechwytywanie żądania uzgodnienia połączenia WebSocket. Uzgadnianie połączenia odbywa się za pomocą żądania uaktualnienia HTTP, więc jego przepływ pasuje do modelu webRequest zorientowanego na HTTP. Pamiętaj, że interfejs API nie przechwytuje:
- Poszczególne wiadomości wysyłane przez nawiązane połączenie WebSocket.
- WebSocket zamyka połączenie.
Przekierowania nie są obsługiwane w przypadku żądań WebSocket.
Od Chrome 72 rozszerzenie może przechwycić żądanie tylko wtedy, gdy ma uprawnienia hosta zarówno do żądanego adresu URL, jak i do inicjatora żądania.
Od Chrome w wersji 96 interfejs WebRequest API obsługuje przechwytywanie żądania uzgadniania WebTransport przez HTTP/3. Ponieważ uzgadnianie połączenia odbywa się za pomocą żądania HTTP CONNECT, jego przepływ pasuje do modelu webRequest zorientowanego na HTTP. Uwaga:
- Po nawiązaniu sesji rozszerzenia nie mogą obserwować sesji ani w nią ingerować za pomocą interfejsu WebRequest API.
- Modyfikowanie nagłówków żądania HTTP w
onBeforeSendHeaders
jest ignorowane. - Przekierowania i uwierzytelnianie nie są obsługiwane w WebTransport przez HTTP/3.
Identyfikatory żądań
Każde żądanie jest identyfikowane za pomocą identyfikatora żądania. Ten identyfikator jest unikalny w ramach sesji przeglądarki i kontekstu rozszerzenia. Pozostaje stały w cyklu życia żądania i może służyć do dopasowywania zdarzeń do tego samego żądania. Pamiętaj, że w przypadku przekierowania HTTP lub uwierzytelniania HTTP kilka żądań HTTP jest mapowanych na 1 żądanie internetowe.
Rejestrowanie detektorów zdarzeń
Aby zarejestrować odbiornik zdarzeń dla żądania internetowego, użyj odmiany zwykłej addListener()
funkcji. Oprócz określenia funkcji wywołania zwrotnego musisz podać argument filtra i możesz podać opcjonalny argument dodatkowych informacji.
3 argumenty funkcji addListener()
interfejsu API żądania internetowego 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 jako pierwszy parametr obowiązkową funkcję wywołania zwrotnego. Ta funkcja wywołania zwrotnego otrzymuje słownik zawierający informacje o bieżącym żądaniu adresu URL. Informacje w tym słowniku zależą od konkretnego 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 momentu, gdy funkcja wywołania zwrotnego zwróci wartość. W takim przypadku wywołanie zwrotne może zwrócić wartość webRequest.BlockingResponse
, która określa dalszy cykl życia żądania. W zależności od kontekstu ta odpowiedź umożliwia anulowanie lub przekierowanie żądania (onBeforeRequest
), anulowanie żądania lub zmodyfikowanie nagłówków (onBeforeSendHeaders
, onHeadersReceived
) oraz anulowanie żądania lub podanie danych uwierzytelniających (onAuthRequired
).
Jeśli opcjonalna tablica opt_extraInfoSpec
zawiera ciąg 'asyncBlocking'
(dozwolony tylko w przypadku onAuthRequired
), rozszerzenie może asynchronicznie generować webRequest.BlockingResponse
.
Parametr webRequest.RequestFilter
filter
umożliwia ograniczenie żą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ń, takie jak
main_frame
(dokument wczytywany w ramce najwyższego poziomu),sub_frame
(dokument wczytywany w ramce osadzonej) iimage
(obraz w witrynie). ZobaczwebRequest.RequestFilter
. - Identyfikator karty
- Identyfikator jednej karty.
- Identyfikator okna
- Identyfikator okna.
W zależności od typu zdarzenia możesz określić ciągi znaków w opt_extraInfoSpec
, aby poprosić o dodatkowe informacje o żądaniu. Służy do podawania szczegółowych informacji o danych w żądaniu tylko wtedy, gdy jest to wyraźnie wymagane.
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 zgodnie z zasadami, które ma uprawnienie "webRequestBlocking"
.
Aby podać dane logowania synchronicznie:
chrome.webRequest.onAuthRequired.addListener((details) => {
return {
authCredentials: {
username: 'guest',
password: 'guest'
}
};
},
{ urls: ['https://httpbin.org/basic-auth/guest/guest'] },
['blocking']
);
Aby podać dane logowania asynchronicznie:
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ń internetowych warto poznać kilka szczegółów implementacji:
web_accessible_resources
Gdy rozszerzenie używa interfejsów API webRequest do przekierowania żądania zasobu publicznego do zasobu, który nie jest dostępny w internecie, jest blokowane i powoduje błąd. Powyższe zasady obowiązują nawet wtedy, gdy zasób, który nie jest dostępny w internecie, należy do rozszerzenia przekierowującego. Aby zadeklarować zasoby do użycia z interfejsami declarativeWebRequest API, w pliku manifestu należy zadeklarować i wypełnić tablicę "web_accessible_resources"
zgodnie z dokumentacją tutaj.
Rozwiązywanie konfliktów
W obecnej implementacji interfejsu Web Request API żądanie jest uznawane za anulowane, jeśli co najmniej jedno rozszerzenie wyda polecenie anulowania żądania. Jeśli rozszerzenie anuluje żądanie, wszystkie rozszerzenia otrzymają powiadomienie w postaci zdarzenia onErrorOccurred
. Tylko 1 rozszerzenie może przekierować żądanie lub zmodyfikować nagłówek w danym momencie. Jeśli więcej niż jedno rozszerzenie próbuje zmodyfikować żądanie, wygrywa rozszerzenie zainstalowane jako ostatnie, a wszystkie pozostałe są ignorowane. Rozszerzenie nie otrzymuje powiadomienia, jeśli jego instrukcja modyfikacji lub przekierowania została zignorowana.
Pamięć podręczna
Chrome korzysta z 2 rodzajów pamięci podręcznej: na dysku i bardzo szybkiej w pamięci. Czas przechowywania pamięci podręcznej w pamięci jest powiązany z czasem przechowywania procesu renderowania, który w przybliżeniu odpowiada karcie.
Żądania, na które odpowiada pamięć podręczna, są niewidoczne dla interfejsu Web Request API. Jeśli moduł obsługi żądań zmieni swoje działanie (np. sposób blokowania żądań), proste odświeżenie strony może nie uwzględnić tej zmiany. Aby mieć pewność, że zmiana zachowania zostanie wprowadzona, wywołaj funkcję handlerBehaviorChanged()
, aby wyczyścić pamięć podręczną. Nie rób tego jednak zbyt często, ponieważ czyszczenie pamięci podręcznej jest bardzo kosztowną operacją. Po zarejestrowaniu lub wyrejestrowaniu detektora zdarzeń nie musisz wywoływać funkcji
handlerBehaviorChanged()
.
Sygnatury czasowe
Właściwość timestamp
zdarzeń żądań internetowych jest gwarantowana tylko w zakresie wewnętrznej spójności.
Porównanie jednego zdarzenia z innym da prawidłowe przesunięcie między nimi, ale porównanie ich z bieżącym czasem w rozszerzeniu (np. za pomocą (new Date()).getTime()
) może dać nieoczekiwane wyniki.
Obsługa błędów
Jeśli spróbujesz zarejestrować zdarzenie z nieprawidłowymi argumentami, zostanie zgłoszony błąd JavaScriptu, a procedura obsługi zdarzeń nie zostanie zarejestrowana. Jeśli podczas obsługi zdarzenia wystąpi błąd lub jeśli funkcja obsługi zdarzeń zwróci nieprawidłową odpowiedź blokującą, w konsoli rozszerzenia zostanie zarejestrowany komunikat o błędzie, a funkcja obsługi zostanie zignorowana w przypadku tego żądania.
Przykłady
Ten przykład pokazuje, jak zablokować wszystkie żądania 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 blokującego modułu obsługi zdarzeń, dlatego w pliku manifestu wymaga uprawnień "webRequest"
i "webRequestBlocking"
.
Poniższy przykład pozwala osiągnąć ten sam cel w bardziej efektywny sposób, ponieważ żądania, które nie są kierowane na www.evil.com
, nie muszą być przekazywane do rozszerzenia:
chrome.webRequest.onBeforeRequest.addListener(
function(details) { return {cancel: true}; },
{urls: ["*://www.evil.com/*"]},
["blocking"]
);
Ten przykład pokazuje, jak usunąć nagłówek klienta użytkownika 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 chrome.webRequest
API, zainstaluj przykładowy kod webRequest z repozytorium chrome-extension-samples.
Typy
BlockingResponse
Zwraca wartość dla funkcji obsługi zdarzeń, do których zastosowano parametr extraInfoSpec „blocking”. Umożliwia modułowi obsługi zdarzeń modyfikowanie żądań sieciowych.
Właściwości
-
authCredentials
obiekt opcjonalny
Używana tylko w odpowiedzi na zdarzenie onAuthRequired. Jeśli to ustawienie jest włączone, żądanie jest wysyłane przy użyciu podanych danych logowania.
-
hasło
ciąg znaków
-
nazwa użytkownika
ciąg znaków
-
-
anuluj
wartość logiczna opcjonalna
Jeśli wartość to „true”, żądanie zostanie anulowane. Zapobiega to wysłaniu prośby. Może być używana jako odpowiedź na zdarzenia onBeforeRequest, onBeforeSendHeaders, onHeadersReceived i onAuthRequired.
-
redirectUrl
string opcjonalny
Używane tylko jako odpowiedź na zdarzenia onBeforeRequest i onHeadersReceived. Jeśli ta opcja jest ustawiona, pierwotne żądanie nie zostanie wysłane ani zrealizowane, tylko przekierowane na podany adres URL. Przekierowania do schematów innych niż HTTP, np.
data:
, są dozwolone. Przekierowania zainicjowane przez działanie przekierowania używają oryginalnej metody żądania, z jednym wyjątkiem: jeśli przekierowanie zostanie zainicjowane na etapie onHeadersReceived, zostanie ono wysłane przy użyciu metody GET. Przekierowania z adresów URL ze schematamiws://
iwss://
są ignorowane. -
requestHeaders
HttpHeaders opcjonalny
Używane tylko w odpowiedzi na zdarzenie onBeforeSendHeaders. Jeśli to pole jest ustawione, żądanie jest wysyłane z tymi nagłówkami.
-
responseHeaders
HttpHeaders opcjonalny
Używane tylko jako odpowiedź na zdarzenie onHeadersReceived. Jeśli jest ustawiony, zakłada się, że serwer odpowiedział za pomocą tych nagłówków odpowiedzi. Zwróć tylko
responseHeaders
, jeśli naprawdę chcesz zmodyfikować nagłówki, aby ograniczyć liczbę konfliktów (tylko jedno rozszerzenie może modyfikowaćresponseHeaders
w przypadku każdego żądania).
FormDataItem
Zawiera dane przekazywane w danych formularza. W przypadku formularza zakodowanego w formacie URL dane są przechowywane jako ciąg znaków, jeśli są ciągiem znaków UTF-8, a w innych przypadkach jako ArrayBuffer. W przypadku danych formularza jest to ArrayBuffer. Jeśli dane formularza reprezentują przesyłanie pliku, jest to ciąg znaków z nazwą pliku, jeśli została ona podana.
Typ wyliczeniowy
ArrayBuffer
ciąg znaków
HttpHeaders
Tablica nagłówków HTTP. Każdy nagłówek jest reprezentowany jako słownik zawierający klucze name
oraz value
lub binaryValue
.
Typ
object[]
Właściwości
-
binaryValue
number[] opcjonalny
Wartość nagłówka HTTP, jeśli nie można jej przedstawić w formacie UTF-8, przechowywana jako poszczególne wartości bajtów (0–255).
-
nazwa
ciąg znaków
Nazwa nagłówka HTTP.
-
wartość
string opcjonalny
Wartość nagłówka HTTP, jeśli można ją przedstawić w formacie UTF-8.
IgnoredActionType
Typ wyliczeniowy
„redirect”
„request_headers”
„response_headers”
"auth_credentials"
OnAuthRequiredOptions
Typ wyliczeniowy
„responseHeaders”
Określa, że nagłówki odpowiedzi powinny być uwzględnione w wydarzeniu.
„blocking”
Określa, że żądanie jest blokowane do momentu, gdy funkcja wywołania zwrotnego zwróci wartość.
"asyncBlocking"
Określa, że funkcja wywołania zwrotnego jest obsługiwana asynchronicznie.
„extraHeaders”
Określa, że nagłówki mogą naruszać współdzielenie zasobów między serwerami z różnych domen (CORS).
OnBeforeRedirectOptions
Typ wyliczeniowy
„responseHeaders”
Określa, że nagłówki odpowiedzi powinny być uwzględnione w wydarzeniu.
„extraHeaders”
Określa, że nagłówki mogą naruszać współdzielenie zasobów między serwerami z różnych domen (CORS).
OnBeforeRequestOptions
Typ wyliczeniowy
„blocking”
Określa, że żądanie jest blokowane do momentu, gdy funkcja wywołania zwrotnego zwróci wartość.
„requestBody”
Określa, że treść żądania powinna być uwzględniona w zdarzeniu.
„extraHeaders”
Określa, że nagłówki mogą naruszać współdzielenie zasobów między serwerami z różnych domen (CORS).
OnBeforeSendHeadersOptions
Typ wyliczeniowy
„requestHeaders”
Określa, że nagłówek żądania powinien być uwzględniony w zdarzeniu.
„blocking”
Określa, że żądanie jest blokowane do momentu, gdy funkcja wywołania zwrotnego zwróci wartość.
„extraHeaders”
Określa, że nagłówki mogą naruszać współdzielenie zasobów między serwerami z różnych domen (CORS).
OnCompletedOptions
Typ wyliczeniowy
„responseHeaders”
Określa, że nagłówki odpowiedzi powinny być uwzględnione w wydarzeniu.
„extraHeaders”
Określa, że nagłówki mogą naruszać współdzielenie zasobów między serwerami z różnych domen (CORS).
OnErrorOccurredOptions
Wartość
„extraHeaders”
OnHeadersReceivedOptions
Typ wyliczeniowy
„blocking”
Określa, że żądanie jest blokowane do momentu, gdy funkcja wywołania zwrotnego zwróci wartość.
„responseHeaders”
Określa, że nagłówki odpowiedzi powinny być uwzględnione w wydarzeniu.
„extraHeaders”
Określa, że nagłówki mogą naruszać współdzielenie zasobów między serwerami z różnych domen (CORS).
OnResponseStartedOptions
Typ wyliczeniowy
„responseHeaders”
Określa, że nagłówki odpowiedzi powinny być uwzględnione w wydarzeniu.
„extraHeaders”
Określa, że nagłówki mogą naruszać współdzielenie zasobów między serwerami z różnych domen (CORS).
OnSendHeadersOptions
Typ wyliczeniowy
„requestHeaders”
Określa, że nagłówek żądania powinien być uwzględniony w zdarzeniu.
„extraHeaders”
Określa, że nagłówki mogą naruszać współdzielenie zasobów między serwerami z różnych domen (CORS).
RequestFilter
Obiekt opisujący filtry, które mają być stosowane do zdarzeń webRequest.
Właściwości
-
tabId
number opcjonalny
-
typy
ResourceType[] opcjonalnie
Lista typów żądań. Żądania, które nie pasują do żadnego z tych typów, zostaną odfiltrowane.
-
adresy
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
number opcjonalny
ResourceType
Typ wyliczeniowy
„main_frame”
Określa zasób jako główną ramkę.
„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 pakiet internetowy.
„other”
Określa zasób jako typ nieujęty na liście.
UploadData
Zawiera dane przesłane w żądaniu adresu URL.
Właściwości
-
B
dowolny opcjonalny
Obiekt ArrayBuffer z kopią danych.
-
plik
string opcjonalny
Ciąg znaków ze ś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-minutowego przedziału czasu. handlerBehaviorChanged
to kosztowne wywołanie funkcji, którego nie należy często używać.
Wartość
20
Metody
handlerBehaviorChanged()
chrome.webRequest.handlerBehaviorChanged(): Promise<void>
Należy wywołać, gdy zmieni się zachowanie modułów obsługi webRequest, aby zapobiec nieprawidłowemu przetwarzaniu z powodu buforowania. Wywołanie tej funkcji jest kosztowne. Nie dzwoń często.
Zwroty
-
Promise<void>
Chrome 116 lub nowsza
Wydarzenia
onActionIgnored
chrome.webRequest.onActionIgnored.addListener(
callback: function,
)
Wywoływane, gdy proponowana przez rozszerzenie modyfikacja żądania sieciowego jest ignorowana. Dzieje się tak w przypadku konfliktów z innymi rozszerzeniami.
Parametry
-
callback
funkcja
Parametr
callback
wygląda tak:(details: object) => void
-
szczegóły
obiekt
-
działanie
Proponowane działanie, które zostało zignorowane.
-
requestId
ciąg znaków
Identyfikator żądania. Identyfikatory żądań są unikalne w ramach sesji przeglądarki. Dzięki temu można je wykorzystać do powiązania różnych zdarzeń w ramach tego samego żądania.
-
-
onAuthRequired
chrome.webRequest.onAuthRequired.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnAuthRequiredOptions[],
)
Wywoływane, gdy wystąpi błąd uwierzytelniania. Odbiorca ma 3 opcje: może podać dane logowania, anulować prośbę i wyświetlić stronę z błędem lub nie podejmować żadnych działań w odpowiedzi na wyzwanie. Jeśli podano nieprawidłowe dane logowania użytkownika, funkcja może być wywoływana wielokrotnie w przypadku tego samego żądania. Pamiętaj, że w parametrze extraInfoSpec
należy określić tylko jeden z trybów 'blocking'
lub 'asyncBlocking'
.
Parametry
-
callback
funkcja
Parametr
callback
wygląda tak:(details: object, asyncCallback?: function) => BlockingResponse | undefined
-
szczegóły
obiekt
-
pretendent
obiekt
Serwer, który prosi o uwierzytelnienie.
-
host
ciąg znaków
-
port
liczba
-
-
documentId
ciąg znaków
Chrome 106 lub nowszaIdentyfikator UUID dokumentu, który wysyła żądanie.
-
documentLifecycleChrome 106 lub nowsza
Cykl życia dokumentu.
-
frameId
liczba
Wartość 0 oznacza, że żądanie jest wysyłane w głównej ramce, a wartość dodatnia oznacza identyfikator ramki podrzędnej, w której jest wysyłane żądanie. Jeśli dokument (pod)ramki jest wczytany (
type
tomain_frame
lubsub_frame
),frameId
wskazuje identyfikator tej ramki, a nie identyfikator ramki zewnętrznej. Identyfikatory ramek są unikalne w obrębie karty. -
frameTypeChrome 106 lub nowsza
Typ ramki, w której wystąpiło żądanie.
-
inicjator,
string opcjonalny
Chrome w wersji 63 lub nowszejPochodzenie, z którego zostało zainicjowane żądanie. Nie zmienia się on w przypadku przekierowań. Jeśli jest to nieprzezroczyste źródło, używany jest ciąg znaków „null”.
-
isProxy
Wartość logiczna
Wartość „true” w przypadku nagłówka Proxy-Authenticate, a „false” w przypadku nagłówka WWW-Authenticate.
-
method
ciąg znaków
Standardowa metoda HTTP.
-
parentDocumentId
string opcjonalny
Chrome 106 lub nowszaIdentyfikator UUID dokumentu nadrzędnego, do którego należy ta ramka. Jeśli nie ma elementu nadrzędnego, ta wartość nie jest ustawiona.
-
parentFrameId
liczba
Identyfikator ramki, która zawiera ramkę wysyłającą żądanie. Jeśli nie ma ramki nadrzędnej, ustaw wartość -1.
-
obszar
string opcjonalny
Obszar uwierzytelniania udostępniony przez serwer (jeśli taki istnieje).
-
requestId
ciąg znaków
Identyfikator żądania. Identyfikatory żądań są unikalne w ramach sesji przeglądarki. Dzięki temu można je wykorzystać do powiązania różnych zdarzeń w ramach tego samego żądania.
-
responseHeaders
HttpHeaders opcjonalny
Nagłówki odpowiedzi HTTP, które zostały otrzymane wraz z tą odpowiedzią.
-
schemat
ciąg znaków
Schemat uwierzytelniania, np. Basic lub Digest.
-
statusCode
liczba
Chrome 43 lub nowszyStandardowy kod stanu HTTP zwrócony przez serwer.
-
statusLine
ciąg znaków
Wiersz stanu HTTP odpowiedzi lub ciąg znaków „HTTP/0.9 200 OK” w przypadku odpowiedzi HTTP/0.9 (czyli odpowiedzi bez wiersza stanu) lub pusty ciąg znaków, jeśli nie ma nagłówków.
-
tabId
liczba
Identyfikator karty, na której następuje żądanie. Ustaw wartość -1, jeśli żądanie nie jest powiązane z kartą.
-
timeStamp
liczba
Czas wywołania tego sygnału w milisekundach od początku epoki.
-
typ
Sposób wykorzystania żądanego zasobu.
-
URL
ciąg znaków
-
-
asyncCallback
funkcja opcjonalna
Chrome 58 lub nowszyParametr
asyncCallback
wygląda tak:(response: BlockingResponse) => void
-
odpowiedź
-
-
returns
BlockingResponse | undefined
Jeśli w parametrze „extraInfoSpec” określono wartość „blocking”, detektor zdarzeń powinien zwrócić obiekt tego typu.
-
-
filtr
-
extraInfoSpec
OnAuthRequiredOptions[] opcjonalnie
onBeforeRedirect
chrome.webRequest.onBeforeRedirect.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnBeforeRedirectOptions[],
)
Uruchamiane, gdy ma nastąpić przekierowanie zainicjowane przez serwer.
Parametry
-
callback
funkcja
Parametr
callback
wygląda tak:(details: object) => void
-
szczegóły
obiekt
-
documentId
ciąg znaków
Chrome 106 lub nowszaIdentyfikator UUID dokumentu, który wysyła żądanie.
-
documentLifecycleChrome 106 lub nowsza
Cykl życia dokumentu.
-
frameId
liczba
Wartość 0 oznacza, że żądanie jest wysyłane w głównej ramce, a wartość dodatnia oznacza identyfikator ramki podrzędnej, w której jest wysyłane żądanie. Jeśli dokument (pod)ramki jest wczytany (
type
tomain_frame
lubsub_frame
),frameId
wskazuje identyfikator tej ramki, a nie identyfikator ramki zewnętrznej. Identyfikatory ramek są unikalne w obrębie karty. -
frameTypeChrome 106 lub nowsza
Typ ramki, w której wystąpiło żądanie.
-
fromCache
Wartość logiczna
Wskazuje, czy ta odpowiedź została pobrana z pamięci podręcznej na dysku.
-
inicjator,
string opcjonalny
Chrome w wersji 63 lub nowszejPochodzenie, z którego zostało zainicjowane żądanie. Nie zmienia się on w przypadku przekierowań. Jeśli jest to nieprzezroczyste źródło, używany jest ciąg znaków „null”.
-
ip
string opcjonalny
Adres IP serwera, do którego zostało wysłane żądanie. Może to być dosłowny adres IPv6.
-
method
ciąg znaków
Standardowa metoda HTTP.
-
parentDocumentId
string opcjonalny
Chrome 106 lub nowszaIdentyfikator UUID dokumentu nadrzędnego, do którego należy ta ramka. Jeśli nie ma elementu nadrzędnego, ta wartość nie jest ustawiona.
-
parentFrameId
liczba
Identyfikator ramki, która zawiera ramkę wysyłającą żądanie. Jeśli nie ma ramki nadrzędnej, ustaw wartość -1.
-
redirectUrl
ciąg znaków
Nowy adres URL.
-
requestId
ciąg znaków
Identyfikator żądania. Identyfikatory żądań są unikalne w ramach sesji przeglądarki. Dzięki temu można je wykorzystać do powiązania różnych zdarzeń w ramach tego samego żądania.
-
responseHeaders
HttpHeaders opcjonalny
Nagłówki odpowiedzi HTTP, które zostały odebrane wraz z tym przekierowaniem.
-
statusCode
liczba
Standardowy kod stanu HTTP zwrócony przez serwer.
-
statusLine
ciąg znaków
Wiersz stanu HTTP odpowiedzi lub ciąg znaków „HTTP/0.9 200 OK” w przypadku odpowiedzi HTTP/0.9 (czyli odpowiedzi bez wiersza stanu) lub pusty ciąg znaków, jeśli nie ma nagłówków.
-
tabId
liczba
Identyfikator karty, na której następuje żądanie. Ustaw wartość -1, jeśli żądanie nie jest powiązane z kartą.
-
timeStamp
liczba
Czas wywołania tego sygnału w milisekundach od początku epoki.
-
typ
Sposób wykorzystania żądanego zasobu.
-
URL
ciąg znaków
-
-
-
filtr
-
extraInfoSpec
OnBeforeRedirectOptions[] opcjonalnie
onBeforeRequest
chrome.webRequest.onBeforeRequest.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnBeforeRequestOptions[],
)
Uruchamiane, gdy ma nastąpić wysłanie żądania.
Parametry
-
callback
funkcja
Parametr
callback
wygląda tak:(details: object) => BlockingResponse | undefined
-
szczegóły
obiekt
-
documentId
string opcjonalny
Chrome 106 lub nowszaIdentyfikator UUID dokumentu, który wysyła żądanie.
-
documentLifecycle
extensionTypes.DocumentLifecycle opcjonalnie
Chrome 106 lub nowszaCykl życia dokumentu.
-
frameId
liczba
Wartość 0 oznacza, że żądanie jest wysyłane w głównej ramce, a wartość dodatnia oznacza identyfikator ramki podrzędnej, w której jest wysyłane żądanie. Jeśli dokument (pod)ramki jest wczytany (
type
tomain_frame
lubsub_frame
),frameId
wskazuje identyfikator tej ramki, a nie identyfikator ramki zewnętrznej. Identyfikatory ramek są unikalne w obrębie karty. -
frameType
extensionTypes.FrameType opcjonalny
Chrome 106 lub nowszaTyp ramki, w której wystąpiło żądanie.
-
inicjator,
string opcjonalny
Chrome w wersji 63 lub nowszejPochodzenie, z którego zostało zainicjowane żądanie. Nie zmienia się on w przypadku przekierowań. Jeśli jest to nieprzezroczyste źródło, używany jest ciąg znaków „null”.
-
method
ciąg znaków
Standardowa metoda HTTP.
-
parentDocumentId
string opcjonalny
Chrome 106 lub nowszaIdentyfikator UUID dokumentu nadrzędnego, do którego należy ta ramka. Jeśli nie ma elementu nadrzędnego, ta wartość nie jest ustawiona.
-
parentFrameId
liczba
Identyfikator ramki, która zawiera ramkę wysyłającą żądanie. Jeśli nie ma ramki nadrzędnej, ustaw wartość -1.
-
requestBody
obiekt opcjonalny
Zawiera dane treści żądania HTTP. Podawane tylko wtedy, gdy extraInfoSpec zawiera „requestBody”.
-
błąd
string opcjonalny
Błędy podczas uzyskiwania danych z treści żądania.
-
formData
obiekt opcjonalny
Jeśli metoda żądania to POST, a treść jest ciągiem par klucz-wartość zakodowanych w UTF8 jako multipart/form-data lub application/x-www-form-urlencoded, ten słownik jest obecny i dla każdego klucza zawiera listę wszystkich wartości tego klucza. Jeśli dane są innego typu lub są nieprawidłowo sformatowane, słownik nie jest dostępny. Przykładowa wartość tego słownika to {'key': ['value1', 'value2']}.
-
nieprzetworzony
UploadData[] opcjonalny
Jeśli metoda żądania to PUT lub POST, a treść nie została jeszcze przeanalizowana w formData, ta tablica zawiera nieprzeanalizowane elementy treści żądania.
-
-
requestId
ciąg znaków
Identyfikator żądania. Identyfikatory żądań są unikalne w ramach sesji przeglądarki. Dzięki temu można je wykorzystać do powiązania różnych zdarzeń w ramach tego samego żądania.
-
tabId
liczba
Identyfikator karty, na której następuje żądanie. Ustaw wartość -1, jeśli żądanie nie jest powiązane z kartą.
-
timeStamp
liczba
Czas wywołania tego sygnału w milisekundach od początku epoki.
-
typ
Sposób wykorzystania żądanego zasobu.
-
URL
ciąg znaków
-
-
returns
BlockingResponse | undefined
Jeśli w parametrze „extraInfoSpec” określono wartość „blocking”, detektor zdarzeń powinien zwrócić obiekt tego typu.
-
-
filtr
-
extraInfoSpec
OnBeforeRequestOptions[] opcjonalnie
onBeforeSendHeaders
chrome.webRequest.onBeforeSendHeaders.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnBeforeSendHeadersOptions[],
)
Wywoływane przed wysłaniem żądania HTTP, gdy dostępne są nagłówki żądania. Może to nastąpić po nawiązaniu połączenia TCP z serwerem, ale przed wysłaniem jakichkolwiek danych HTTP.
Parametry
-
callback
funkcja
Parametr
callback
wygląda tak:(details: object) => BlockingResponse | undefined
-
szczegóły
obiekt
-
documentId
ciąg znaków
Chrome 106 lub nowszaIdentyfikator UUID dokumentu, który wysyła żądanie.
-
documentLifecycleChrome 106 lub nowsza
Cykl życia dokumentu.
-
frameId
liczba
Wartość 0 oznacza, że żądanie jest wysyłane w głównej ramce, a wartość dodatnia oznacza identyfikator ramki podrzędnej, w której jest wysyłane żądanie. Jeśli dokument (pod)ramki jest wczytany (
type
tomain_frame
lubsub_frame
),frameId
wskazuje identyfikator tej ramki, a nie identyfikator ramki zewnętrznej. Identyfikatory ramek są unikalne w obrębie karty. -
frameTypeChrome 106 lub nowsza
Typ ramki, w której wystąpiło żądanie.
-
inicjator,
string opcjonalny
Chrome w wersji 63 lub nowszejPochodzenie, z którego zostało zainicjowane żądanie. Nie zmienia się on w przypadku przekierowań. Jeśli jest to nieprzezroczyste źródło, używany jest ciąg znaków „null”.
-
method
ciąg znaków
Standardowa metoda HTTP.
-
parentDocumentId
string opcjonalny
Chrome 106 lub nowszaIdentyfikator UUID dokumentu nadrzędnego, do którego należy ta ramka. Jeśli nie ma elementu nadrzędnego, ta wartość nie jest ustawiona.
-
parentFrameId
liczba
Identyfikator ramki, która zawiera ramkę wysyłającą żądanie. Jeśli nie ma ramki nadrzędnej, ustaw wartość -1.
-
requestHeaders
HttpHeaders opcjonalny
Nagłówki żądania HTTP, które zostaną wysłane wraz z tym żądaniem.
-
requestId
ciąg znaków
Identyfikator żądania. Identyfikatory żądań są unikalne w ramach sesji przeglądarki. Dzięki temu można je wykorzystać do powiązania różnych zdarzeń w ramach tego samego żądania.
-
tabId
liczba
Identyfikator karty, na której następuje żądanie. Ustaw wartość -1, jeśli żądanie nie jest powiązane z kartą.
-
timeStamp
liczba
Czas wywołania tego sygnału w milisekundach od początku epoki.
-
typ
Sposób wykorzystania żądanego zasobu.
-
URL
ciąg znaków
-
-
returns
BlockingResponse | undefined
Jeśli w parametrze „extraInfoSpec” określono wartość „blocking”, detektor zdarzeń powinien zwrócić obiekt tego typu.
-
-
filtr
-
extraInfoSpec
OnBeforeSendHeadersOptions[] opcjonalnie
onCompleted
chrome.webRequest.onCompleted.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnCompletedOptions[],
)
Uruchamiane po zakończeniu żądania.
Parametry
-
callback
funkcja
Parametr
callback
wygląda tak:(details: object) => void
-
szczegóły
obiekt
-
documentId
ciąg znaków
Chrome 106 lub nowszaIdentyfikator UUID dokumentu, który wysyła żądanie.
-
documentLifecycleChrome 106 lub nowsza
Cykl życia dokumentu.
-
frameId
liczba
Wartość 0 oznacza, że żądanie jest wysyłane w głównej ramce, a wartość dodatnia oznacza identyfikator ramki podrzędnej, w której jest wysyłane żądanie. Jeśli dokument (pod)ramki jest wczytany (
type
tomain_frame
lubsub_frame
),frameId
wskazuje identyfikator tej ramki, a nie identyfikator ramki zewnętrznej. Identyfikatory ramek są unikalne w obrębie karty. -
frameTypeChrome 106 lub nowsza
Typ ramki, w której wystąpiło żądanie.
-
fromCache
Wartość logiczna
Wskazuje, czy ta odpowiedź została pobrana z pamięci podręcznej na dysku.
-
inicjator,
string opcjonalny
Chrome w wersji 63 lub nowszejPochodzenie, z którego zostało zainicjowane żądanie. Nie zmienia się on w przypadku przekierowań. Jeśli jest to nieprzezroczyste źródło, używany jest ciąg znaków „null”.
-
ip
string opcjonalny
Adres IP serwera, do którego zostało wysłane żądanie. Może to być dosłowny adres IPv6.
-
method
ciąg znaków
Standardowa metoda HTTP.
-
parentDocumentId
string opcjonalny
Chrome 106 lub nowszaIdentyfikator UUID dokumentu nadrzędnego, do którego należy ta ramka. Jeśli nie ma elementu nadrzędnego, ta wartość nie jest ustawiona.
-
parentFrameId
liczba
Identyfikator ramki, która zawiera ramkę wysyłającą żądanie. Jeśli nie ma ramki nadrzędnej, ustaw wartość -1.
-
requestId
ciąg znaków
Identyfikator żądania. Identyfikatory żądań są unikalne w ramach sesji przeglądarki. Dzięki temu można je wykorzystać do powiązania różnych zdarzeń w ramach tego samego żądania.
-
responseHeaders
HttpHeaders opcjonalny
Nagłówki odpowiedzi HTTP, które zostały otrzymane wraz z tą odpowiedzią.
-
statusCode
liczba
Standardowy kod stanu HTTP zwrócony przez serwer.
-
statusLine
ciąg znaków
Wiersz stanu HTTP odpowiedzi lub ciąg znaków „HTTP/0.9 200 OK” w przypadku odpowiedzi HTTP/0.9 (czyli odpowiedzi bez wiersza stanu) lub pusty ciąg znaków, jeśli nie ma nagłówków.
-
tabId
liczba
Identyfikator karty, na której następuje żądanie. Ustaw wartość -1, jeśli żądanie nie jest powiązane z kartą.
-
timeStamp
liczba
Czas wywołania tego sygnału w milisekundach od początku epoki.
-
typ
Sposób wykorzystania żądanego zasobu.
-
URL
ciąg znaków
-
-
-
filtr
-
extraInfoSpec
OnCompletedOptions[] opcjonalnie
onErrorOccurred
chrome.webRequest.onErrorOccurred.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnErrorOccurredOptions[],
)
Uruchamiane, gdy wystąpi błąd.
Parametry
-
callback
funkcja
Parametr
callback
wygląda tak:(details: object) => void
-
szczegóły
obiekt
-
documentId
ciąg znaków
Chrome 106 lub nowszaIdentyfikator UUID dokumentu, który wysyła żądanie. Ta wartość nie występuje, jeśli żądanie dotyczy nawigacji w ramce.
-
documentLifecycleChrome 106 lub nowsza
Cykl życia dokumentu.
-
błąd
ciąg znaków
Opis błędu. Nie ma gwarancji, że ten ciąg znaków będzie zgodny wstecznie między wersjami. Nie możesz analizować jego treści ani podejmować na ich podstawie działań.
-
frameId
liczba
Wartość 0 oznacza, że żądanie jest wysyłane w głównej ramce, a wartość dodatnia oznacza identyfikator ramki podrzędnej, w której jest wysyłane żądanie. Jeśli dokument (pod)ramki jest wczytany (
type
tomain_frame
lubsub_frame
),frameId
wskazuje identyfikator tej ramki, a nie identyfikator ramki zewnętrznej. Identyfikatory ramek są unikalne w obrębie karty. -
frameTypeChrome 106 lub nowsza
Typ ramki, w której wystąpiło żądanie.
-
fromCache
Wartość logiczna
Wskazuje, czy ta odpowiedź została pobrana z pamięci podręcznej na dysku.
-
inicjator,
string opcjonalny
Chrome w wersji 63 lub nowszejPochodzenie, z którego zostało zainicjowane żądanie. Nie zmienia się on w przypadku przekierowań. Jeśli jest to nieprzezroczyste źródło, używany jest ciąg znaków „null”.
-
ip
string opcjonalny
Adres IP serwera, do którego zostało wysłane żądanie. Może to być dosłowny adres IPv6.
-
method
ciąg znaków
Standardowa metoda HTTP.
-
parentDocumentId
string opcjonalny
Chrome 106 lub nowszaIdentyfikator UUID dokumentu nadrzędnego, do którego należy ta ramka. Jeśli nie ma elementu nadrzędnego, ta wartość nie jest ustawiona.
-
parentFrameId
liczba
Identyfikator ramki, która zawiera ramkę wysyłającą żądanie. Jeśli nie ma ramki nadrzędnej, ustaw wartość -1.
-
requestId
ciąg znaków
Identyfikator żądania. Identyfikatory żądań są unikalne w ramach sesji przeglądarki. Dzięki temu można je wykorzystać do powiązania różnych zdarzeń w ramach tego samego żądania.
-
tabId
liczba
Identyfikator karty, na której następuje żądanie. Ustaw wartość -1, jeśli żądanie nie jest powiązane z kartą.
-
timeStamp
liczba
Czas wywołania tego sygnału w milisekundach od początku epoki.
-
typ
Sposób wykorzystania żądanego zasobu.
-
URL
ciąg znaków
-
-
-
filtr
-
extraInfoSpec
OnErrorOccurredOptions[] opcjonalnie
onHeadersReceived
chrome.webRequest.onHeadersReceived.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnHeadersReceivedOptions[],
)
Wysyłane po otrzymaniu nagłówków odpowiedzi HTTP na żądanie.
Parametry
-
callback
funkcja
Parametr
callback
wygląda tak:(details: object) => BlockingResponse | undefined
-
szczegóły
obiekt
-
documentId
ciąg znaków
Chrome 106 lub nowszaIdentyfikator UUID dokumentu, który wysyła żądanie.
-
documentLifecycleChrome 106 lub nowsza
Cykl życia dokumentu.
-
frameId
liczba
Wartość 0 oznacza, że żądanie jest wysyłane w głównej ramce, a wartość dodatnia oznacza identyfikator ramki podrzędnej, w której jest wysyłane żądanie. Jeśli dokument (pod)ramki jest wczytany (
type
tomain_frame
lubsub_frame
),frameId
wskazuje identyfikator tej ramki, a nie identyfikator ramki zewnętrznej. Identyfikatory ramek są unikalne w obrębie karty. -
frameTypeChrome 106 lub nowsza
Typ ramki, w której wystąpiło żądanie.
-
inicjator,
string opcjonalny
Chrome w wersji 63 lub nowszejPochodzenie, z którego zostało zainicjowane żądanie. Nie zmienia się on w przypadku przekierowań. Jeśli jest to nieprzezroczyste źródło, używany jest ciąg znaków „null”.
-
method
ciąg znaków
Standardowa metoda HTTP.
-
parentDocumentId
string opcjonalny
Chrome 106 lub nowszaIdentyfikator UUID dokumentu nadrzędnego, do którego należy ta ramka. Jeśli nie ma elementu nadrzędnego, ta wartość nie jest ustawiona.
-
parentFrameId
liczba
Identyfikator ramki, która zawiera ramkę wysyłającą żądanie. Jeśli nie ma ramki nadrzędnej, ustaw wartość -1.
-
requestId
ciąg znaków
Identyfikator żądania. Identyfikatory żądań są unikalne w ramach sesji przeglądarki. Dzięki temu można je wykorzystać do powiązania różnych zdarzeń w ramach tego samego żądania.
-
responseHeaders
HttpHeaders opcjonalny
Nagłówki odpowiedzi HTTP, które zostały odebrane wraz z tą odpowiedzią.
-
statusCode
liczba
Chrome 43 lub nowszyStandardowy kod stanu HTTP zwrócony przez serwer.
-
statusLine
ciąg znaków
Wiersz stanu HTTP odpowiedzi lub ciąg znaków „HTTP/0.9 200 OK” w przypadku odpowiedzi HTTP/0.9 (czyli odpowiedzi, które nie mają wiersza stanu).
-
tabId
liczba
Identyfikator karty, na której następuje żądanie. Ustaw wartość -1, jeśli żądanie nie jest powiązane z kartą.
-
timeStamp
liczba
Czas wywołania tego sygnału w milisekundach od początku epoki.
-
typ
Sposób wykorzystania żądanego zasobu.
-
URL
ciąg znaków
-
-
returns
BlockingResponse | undefined
Jeśli w parametrze „extraInfoSpec” określono wartość „blocking”, detektor zdarzeń powinien zwrócić obiekt tego typu.
-
-
filtr
-
extraInfoSpec
OnHeadersReceivedOptions[] opcjonalnie
onResponseStarted
chrome.webRequest.onResponseStarted.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnResponseStartedOptions[],
)
Wywoływane po otrzymaniu pierwszego bajtu treści odpowiedzi. W przypadku żądań HTTP oznacza to, że dostępne są wiersz stanu i nagłówki odpowiedzi.
Parametry
-
callback
funkcja
Parametr
callback
wygląda tak:(details: object) => void
-
szczegóły
obiekt
-
documentId
ciąg znaków
Chrome 106 lub nowszaIdentyfikator UUID dokumentu, który wysyła żądanie.
-
documentLifecycleChrome 106 lub nowsza
Cykl życia dokumentu.
-
frameId
liczba
Wartość 0 oznacza, że żądanie jest wysyłane w głównej ramce, a wartość dodatnia oznacza identyfikator ramki podrzędnej, w której jest wysyłane żądanie. Jeśli dokument (pod)ramki jest wczytany (
type
tomain_frame
lubsub_frame
),frameId
wskazuje identyfikator tej ramki, a nie identyfikator ramki zewnętrznej. Identyfikatory ramek są unikalne w obrębie karty. -
frameTypeChrome 106 lub nowsza
Typ ramki, w której wystąpiło żądanie.
-
fromCache
Wartość logiczna
Wskazuje, czy ta odpowiedź została pobrana z pamięci podręcznej na dysku.
-
inicjator,
string opcjonalny
Chrome w wersji 63 lub nowszejPochodzenie, z którego zostało zainicjowane żądanie. Nie zmienia się on w przypadku przekierowań. Jeśli jest to nieprzezroczyste źródło, używany jest ciąg znaków „null”.
-
ip
string opcjonalny
Adres IP serwera, do którego zostało wysłane żądanie. Może to być dosłowny adres IPv6.
-
method
ciąg znaków
Standardowa metoda HTTP.
-
parentDocumentId
string opcjonalny
Chrome 106 lub nowszaIdentyfikator UUID dokumentu nadrzędnego, do którego należy ta ramka. Jeśli nie ma elementu nadrzędnego, ta wartość nie jest ustawiona.
-
parentFrameId
liczba
Identyfikator ramki, która zawiera ramkę wysyłającą żądanie. Jeśli nie ma ramki nadrzędnej, ustaw wartość -1.
-
requestId
ciąg znaków
Identyfikator żądania. Identyfikatory żądań są unikalne w ramach sesji przeglądarki. Dzięki temu można je wykorzystać do powiązania różnych zdarzeń w ramach tego samego żądania.
-
responseHeaders
HttpHeaders opcjonalny
Nagłówki odpowiedzi HTTP, które zostały otrzymane wraz z tą odpowiedzią.
-
statusCode
liczba
Standardowy kod stanu HTTP zwrócony przez serwer.
-
statusLine
ciąg znaków
Wiersz stanu HTTP odpowiedzi lub ciąg znaków „HTTP/0.9 200 OK” w przypadku odpowiedzi HTTP/0.9 (czyli odpowiedzi bez wiersza stanu) lub pusty ciąg znaków, jeśli nie ma nagłówków.
-
tabId
liczba
Identyfikator karty, na której następuje żądanie. Ustaw wartość -1, jeśli żądanie nie jest powiązane z kartą.
-
timeStamp
liczba
Czas wywołania tego sygnału w milisekundach od początku epoki.
-
typ
Sposób wykorzystania żądanego zasobu.
-
URL
ciąg znaków
-
-
-
filtr
-
extraInfoSpec
OnResponseStartedOptions[] opcjonalnie
onSendHeaders
chrome.webRequest.onSendHeaders.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnSendHeadersOptions[],
)
Wywoływana tuż przed wysłaniem żądania do serwera (modyfikacje poprzednich wywołań zwrotnych onBeforeSendHeaders są widoczne w momencie wywołania onSendHeaders).
Parametry
-
callback
funkcja
Parametr
callback
wygląda tak:(details: object) => void
-
szczegóły
obiekt
-
documentId
ciąg znaków
Chrome 106 lub nowszaIdentyfikator UUID dokumentu, który wysyła żądanie.
-
documentLifecycleChrome 106 lub nowsza
Cykl życia dokumentu.
-
frameId
liczba
Wartość 0 oznacza, że żądanie jest wysyłane w głównej ramce, a wartość dodatnia oznacza identyfikator ramki podrzędnej, w której jest wysyłane żądanie. Jeśli dokument (pod)ramki jest wczytany (
type
tomain_frame
lubsub_frame
),frameId
wskazuje identyfikator tej ramki, a nie identyfikator ramki zewnętrznej. Identyfikatory ramek są unikalne w obrębie karty. -
frameTypeChrome 106 lub nowsza
Typ ramki, w której wystąpiło żądanie.
-
inicjator,
string opcjonalny
Chrome w wersji 63 lub nowszejPochodzenie, z którego zostało zainicjowane żądanie. Nie zmienia się on w przypadku przekierowań. Jeśli jest to nieprzezroczyste źródło, używany jest ciąg znaków „null”.
-
method
ciąg znaków
Standardowa metoda HTTP.
-
parentDocumentId
string opcjonalny
Chrome 106 lub nowszaIdentyfikator UUID dokumentu nadrzędnego, do którego należy ta ramka. Jeśli nie ma elementu nadrzędnego, ta wartość nie jest ustawiona.
-
parentFrameId
liczba
Identyfikator ramki, która zawiera ramkę wysyłającą żądanie. Jeśli nie ma ramki nadrzędnej, ustaw wartość -1.
-
requestHeaders
HttpHeaders opcjonalny
Nagłówki żądania HTTP, które zostały wysłane wraz z tym żądaniem.
-
requestId
ciąg znaków
Identyfikator żądania. Identyfikatory żądań są unikalne w ramach sesji przeglądarki. Dzięki temu można je wykorzystać do powiązania różnych zdarzeń w ramach tego samego żądania.
-
tabId
liczba
Identyfikator karty, na której następuje żądanie. Ustaw wartość -1, jeśli żądanie nie jest powiązane z kartą.
-
timeStamp
liczba
Czas wywołania tego sygnału w milisekundach od początku epoki.
-
typ
Sposób wykorzystania żądanego zasobu.
-
URL
ciąg znaków
-
-
-
filtr
-
extraInfoSpec
OnSendHeadersOptions[] opcjonalnie