Aby korzystać z większości interfejsów API rozszerzeń i funkcji, zadeklaruj intencję rozszerzenia w polach uprawnień pliku manifestu. Rozszerzenia mogą prosić o przyznanie tych kategorii uprawnień określonych za pomocą odpowiednich kluczy pliku manifestu:
"permissions"
- Zawiera elementy z listy znanych ciągów znaków. Zmiany mogą spowodować wyświetlenie ostrzeżenia.
"optional_permissions"
- Przyznawane przez użytkownika w czasie działania, a nie podczas instalacji.
"content_scripts.matches"
- Zawiera co najmniej 1 wzorzec dopasowania, który umożliwia wstrzykiwanie skryptów treści na co najmniej 1 host. Zmiany mogą spowodować wyświetlenie ostrzeżenia.
"host_permissions"
- Zawiera co najmniej jeden wzorzec dopasowania, który zapewnia dostęp do co najmniej jednego hosta. Zmiany mogą spowodować wyświetlenie ostrzeżenia.
"optional_host_permissions"
- Przyznawane przez użytkownika w czasie działania, a nie podczas instalacji.
Uprawnienia pozwalają ograniczyć szkody, jeśli rozszerzenie zostanie przejęte przez złośliwe oprogramowanie. Przed instalacją lub w czasie działania aplikacji użytkownicy widzą ostrzeżenia o uzyskaniu zgody. Szczegóły znajdziesz w sekcji Uprawnienia z ostrzeżeniami.
Rozważ użycie uprawnień opcjonalnych wszędzie tam, gdzie pozwala na to działanie rozszerzenia, aby zapewnić użytkownikom świadomą kontrolę nad dostępem do zasobów i danych.
Jeśli interfejs API wymaga uprawnień, w jego dokumentacji wyjaśniono, jak je zadeklarować. Przykład znajdziesz w sekcji Storage API.
Plik manifestu
Oto przykład sekcji uprawnień w pliku manifestu:
manifest.json:
{
"name": "Permissions Extension",
...
"permissions": [
"activeTab",
"contextMenus",
"storage"
],
"optional_permissions": [
"topSites",
],
"host_permissions": [
"https://www.developer.chrome.com/*"
],
"optional_host_permissions":[
"https://*/*",
"http://*/*"
],
...
"manifest_version": 3
}
Uprawnienia dotyczące hosta
Uprawnienia hosta pozwalają rozszerzeniom na interakcję z wzorcami dopasowania adresu URL. Niektóre interfejsy API Chrome wymagają uprawnień hosta oprócz własnych uprawnień do interfejsu API, które są wymienione na każdej stronie z dokumentacją. Oto przykłady:
- Wysyłaj żądania
fetch()
ze strony skryptu service worker i stron rozszerzeń. - Odczytywanie poufnych właściwości karty (url, tytuł i favIconUrl) oraz wysyłanie dotyczących ich zapytań za pomocą interfejsu API
chrome.tabs
. - Wstawiaj skrypt treści automatycznie.
- Monitoruj i kontroluj żądania sieciowe za pomocą interfejsu API
chrome.webRequest
. - Dostęp do plików cookie możesz uzyskać za pomocą interfejsu API
chrome.cookies
. - Przekierowuj oraz modyfikuj żądania i nagłówki odpowiedzi za pomocą interfejsu
chrome.declarativeNetRequest
API.
Uprawnienia z ostrzeżeniami
Gdy rozszerzenie wymaga wielu uprawnień, a wiele z nich wyświetla ostrzeżenia dotyczące instalacji, użytkownik zobaczy listę ostrzeżeń jak w tym przykładzie:
Użytkownicy chętniej ufają rozszerzeniu z ograniczonymi ostrzeżeniami lub gdy zostaną wyjaśnione uprawnienia. Rozważ wdrożenie opcjonalnych uprawnień lub mniej wydajnego interfejsu API, aby uniknąć niepokojących ostrzeżeń. Sprawdzone metody postępowania z ostrzeżeniami znajdziesz w artykule Ostrzeżenia dotyczące uprawnień. Konkretne ostrzeżenia są wymienione na liście uprawnień wraz z uprawnieniami, do których mają zastosowanie.
Dodanie lub zmiana wzorców dopasowania w polach "host_permissions"
i "content_scripts.matches"
pliku manifestu również spowoduje wyświetlenie ostrzeżenia. Więcej informacji znajdziesz w sekcji Aktualizowanie uprawnień.
Zezwól na dostęp
Jeśli rozszerzenie ma działać pod adresami URL file://
lub działać w trybie incognito, użytkownicy muszą udzielić mu dostępu na stronie z informacjami o nim. Instrukcje otwierania strony z informacjami znajdziesz w sekcji Zarządzanie rozszerzeniami.
Zezwalaj na dostęp do adresów URL plików i stron incognito
- Kliknij prawym przyciskiem myszy ikonę rozszerzenia w Chrome.
Kliknij Zarządzaj rozszerzeniem.
Przewiń w dół, aby włączyć dostęp do adresów URL plików lub tryb incognito.
Aby sprawdzić, czy użytkownik zezwolił na dostęp, możesz wywołać metodę extension.isAllowedIncognitoAccess()
lub extension.isAllowedFileSchemeAccess()
.