Als u de meeste extensie-API's en -functies wilt gebruiken, moet u de intentie van uw extensie aangeven in de machtigingsvelden van het manifest . Extensies kunnen de volgende categorieën machtigingen aanvragen, gespecificeerd met behulp van de respectieve manifestsleutels:
-
"permissions"
- Bevat items uit een lijst met bekende tekenreeksen . Wijzigingen kunnen een waarschuwing veroorzaken.
-
"optional_permissions"
- Toegekend door de gebruiker tijdens runtime, in plaats van tijdens de installatie.
-
"content_scripts.matches"
- Bevat een of meer matchpatronen waarmee inhoudsscripts in een of meer hosts kunnen worden geïnjecteerd. Wijzigingen kunnen een waarschuwing veroorzaken.
-
"host_permissions"
- Bevat een of meer matchpatronen die toegang geven tot een of meer hosts. Wijzigingen kunnen een waarschuwing veroorzaken.
-
"optional_host_permissions"
- Toegekend door de gebruiker tijdens runtime, in plaats van tijdens de installatie.
Machtigingen helpen de schade te beperken als uw extensie wordt aangetast door malware. Sommige toestemmingswaarschuwingen worden aan gebruikers getoond voor hun toestemming vóór de installatie of tijdens runtime, zoals beschreven in Toestemming met waarschuwingen .
Overweeg het gebruik van optionele machtigingen waar de functionaliteit van uw extensie dit toelaat, om gebruikers geïnformeerde controle te geven over de toegang tot bronnen en gegevens.
Als een API toestemming vereist, wordt in de documentatie uitgelegd hoe u deze kunt declareren. Zie Opslag-API voor een voorbeeld.
Manifest
Hier volgt een voorbeeld van de machtigingssectie van een manifestbestand :
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
}
Hostmachtigingen
Met hostrechten kunnen extensies communiceren met de overeenkomende patronen van de URL. Sommige Chrome API's vereisen hostrechten naast hun eigen API-rechten, die op elke referentiepagina worden gedocumenteerd. Hier zijn enkele voorbeelden:
- Maak
fetch()
-verzoeken van de extensieservicemedewerker en extensiepagina's. - Lees en bevraag de gevoelige tabbladeigenschappen (url, titel en favIconUrl) met behulp van de
chrome.tabs
API. - Een inhoudsscript programmatisch injecteren.
- Bewaak en beheer de netwerkverzoeken met de
chrome.webRequest
API. - Krijg toegang tot cookies met de
chrome.cookies
API. - Verzoeken en antwoordheaders omleiden en wijzigen met behulp van
chrome.declarativeNetRequest
API.
Machtigingen met waarschuwingen
Wanneer een extensie meerdere machtigingen vraagt, en veel daarvan waarschuwingen weergeven bij de installatie, ziet de gebruiker een lijst met waarschuwingen, zoals in het volgende voorbeeld:
Gebruikers vertrouwen eerder een extensie met beperkte waarschuwingen of wanneer rechten aan hen worden uitgelegd. Overweeg om optionele machtigingen of een minder krachtige API te implementeren om alarmerende waarschuwingen te voorkomen. Zie Richtlijnen voor toestemmingswaarschuwingen voor best practices voor waarschuwingen. Specifieke waarschuwingen worden weergegeven met de machtigingen waarop ze van toepassing zijn in de referentielijst voor machtigingen .
Het toevoegen of wijzigen van overeenkomstpatronen in de velden "host_permissions"
en "content_scripts.matches"
van het manifestbestand zal ook een waarschuwing activeren. Zie Machtigingen bijwerken voor meer informatie.
Toegang toestaan
Als uw extensie moet worden uitgevoerd op file://
URL's of in de incognitomodus moet werken, moeten gebruikers de extensie toegang geven op de detailpagina. Instructies voor het openen van de detailpagina vindt u onder Uw extensies beheren .
Sta toegang toe tot bestands-URL's en incognitopagina's
- Klik met de rechtermuisknop op het extensiepictogram in Chrome.
Kies Extensie beheren .
Scroll naar beneden om toegang tot bestands-URL's of de incognitomodus in te schakelen.
Om te detecteren of de gebruiker toegang heeft verleend, kunt u extension.isAllowedIncognitoAccess()
of extension.isAllowedFileSchemeAccess()
aanroepen.