Zasoby dostępne w internecie to pliki w rozszerzeniu, do których można uzyskać dostęp z witryn internetowych lub innych rozszerzeń. Rozszerzenia zwykle używają tej funkcji do udostępniania obrazów lub innych zasobów, które muszą być wczytywane na stronach internetowych, ale każdy zasób należący do pakietu rozszerzenia może być dostępny z internetu.
Domyślnie żadne zasoby nie są dostępne przez przeglądarkę, ponieważ umożliwia to złośliwej witrynie odciskanie palca zainstalowanych przez użytkownika rozszerzeń lub wykorzystywanie luk w zabezpieczeniach (np. błędów XSS) w zainstalowanych rozszerzeniach. Tylko strony lub skrypty wczytywane ze źródła rozszerzenia ma dostęp do zasobów tego rozszerzenia.
Deklaracja pliku manifestu
Użyj właściwości pliku manifestu web_accessible_resources
, aby określić, które zasoby są dostępne i dla jakich źródeł. Ta właściwość jest tablicą obiektów deklarujących reguły dostępu do zasobów. Każdy obiekt mapuje tablicę zasobów rozszerzenia na tablicę adresów URL lub identyfikatorów rozszerzeń, które mogą uzyskiwać dostęp do tych zasobów.
{
...
"web_accessible_resources": [
{
"resources": [ "test1.png", "test2.png" ],
"matches": [ "https://web-accessible-resources-1.glitch.me/*" ]
}, {
"resources": [ "test3.png", "test4.png" ],
"matches": [ "https://web-accessible-resources-2.glitch.me/*" ],
"use_dynamic_url": true
}
],
...
}
Każdy obiekt w tablicy zawiera te elementy:
"resources"
- Tablica ciągów znaków, z których każda zawiera ścieżkę względną do danego zasobu w katalogu głównym rozszerzenia. Zasoby mogą zawierać gwiazdki (
*
) dopasowania symboli wieloznacznych. Na przykład"/images/*"
wyświetla rekursywnie wszystko w kataloguimages/
rozszerzenia, podczas gdy"*.png"
wyświetla wszystkie pliki PNG. "matches"
- Tablica ciągów tekstowych, z których każdy zawiera wzorzec dopasowania określający, które witryny mają dostęp do danego zbioru zasobów. Do dopasowywania adresów URL służy tylko punkt początkowy. Punkty początkowe obejmują dopasowywanie subdomen. Google Chrome wygeneruje błąd „Nieprawidłowy wzór dopasowania”, jeśli wzór ma ścieżkę inną niż „/*”.
"extension_ids"
- Tablica ciągów tekstowych, z których każdy zawiera identyfikator rozszerzenia z dostępem do zasobów.
"use_dynamic_url"
- Jeśli ta opcja jest ustawiona na „Prawda”, dostęp do zasobów będzie możliwy tylko za pomocą dynamicznego identyfikatora. Identyfikator dynamiczny jest generowany dla każdej sesji. Oznacza to, że jest on generowany ponownie po ponownym uruchomieniu przeglądarki lub załadowaniu rozszerzenia.
Każdy element musi zawierać element "resources"
oraz element "matches"
lub "extension_ids"
. Spowoduje to utworzenie mapowania, które udostępnia określone zasoby stronom internetowym pasującym do wzoru lub rozszerzeniom o pasujące identyfikatory. Element "use_dynamic_url"
jest opcjonalny.
Łatwość poruszania się po zasobach
Zasoby są dostępne na stronie internetowej za pomocą adresu URL chrome-extension://[PACKAGE ID]/[PATH]
, który można wygenerować za pomocą metody runtime.getURL()
. Zasoby są udostępniane z odpowiednimi nagłówkami CORS, dzięki czemu są dostępne
przez: fetch()
.
Nawigacja z źródła internetowego do zasobu rozszerzenia jest zablokowana, chyba że zasób jest oznaczony jako dostępny w internecie. Pamiętaj o tych szczególnych przypadkach:
- Jeśli rozszerzenie używa interfejsu API webRequest do przekierowywania żądania zasobu publicznego do zasobu, do którego nie można uzyskać dostępu przez Internet, to żądanie jest również blokowane.
- Powyższe założenie jest prawdziwe nawet wtedy, gdy zasób, do którego nie można uzyskać dostępu przez przeglądarkę, należy do rozszerzenia przekierowującego.
- Nawigacja jest zablokowana w trybie incognito, chyba że wartość pola
"incognito"
to"split"
.
Same skrypty treści nie muszą być dozwolone.
Przykład
Przykład zasobów dostępnych w przeglądarce pokazuje, jak używać tego elementu w działającym rozszerzeniu.