Para usar la mayoría de las APIs de extensión y las funciones, debes declarar el intent de tu extensión en los campos de permisos del manifiesto. Las extensiones pueden solicitar las siguientes categorías de permisos, que se especifican con las respectivas claves de manifiesto:
"permissions"
- Contiene elementos de una lista de cadenas conocidas. Los cambios pueden activar una advertencia.
"optional_permissions"
- Lo otorga el usuario durante el tiempo de ejecución, en lugar de hacerlo durante la instalación.
"content_scripts.matches"
- Contiene uno o más patrones de coincidencia que permiten que las secuencias de comandos de contenido se inyecten en uno o más hosts. Los cambios pueden activar una advertencia.
"host_permissions"
- Contiene uno o más patrones de coincidencia que otorgan acceso a uno o más hosts. Los cambios pueden activar una advertencia.
"optional_host_permissions"
- Lo otorga el usuario durante el tiempo de ejecución, en lugar de hacerlo durante la instalación.
Los permisos ayudan a limitar el daño si la extensión se ve comprometida por software malicioso. Se muestran algunas advertencias de permisos a los usuarios para que den su consentimiento antes de la instalación o durante el tiempo de ejecución, como se detalla en Permiso con advertencias.
Considera usar permisos opcionales donde lo permita la funcionalidad de la extensión para brindarles a los usuarios un control informado sobre el acceso a los recursos y los datos.
Si una API requiere un permiso, en su documentación se explica cómo declararlo. Para ver un ejemplo, consulta API de Storage.
Manifest
El siguiente es un ejemplo de la sección de permisos de un archivo manifest:
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
}
Permisos de host
Los permisos de host permiten que las extensiones interactúen con los patrones de coincidencia de la URL. Algunas API de Chrome requieren permisos de host además de sus propios permisos de API, los cuales se documentan en cada página de referencia. Estos son algunos ejemplos:
- Realiza solicitudes
fetch()
desde el service worker de extensiones y las páginas de la extensión. - Lee y consulta las propiedades de la pestaña sensibles (url, título y favIconUrl) con la API de
chrome.tabs
. - Incorpora una secuencia de comandos de contenido de manera programática.
- Supervisa y controla las solicitudes de red con la API de
chrome.webRequest
. - Accede a las cookies con la API de
chrome.cookies
. - Redireccionar y modificar solicitudes y encabezados de respuesta con la API de
chrome.declarativeNetRequest
Permisos con advertencias
Cuando una extensión solicita varios permisos, y muchos de ellos muestran advertencias durante la instalación, el usuario verá una lista de advertencias, como en el siguiente ejemplo:
Es más probable que los usuarios confíen en una extensión con advertencias limitadas o cuando se les expliquen los permisos. Considera implementar permisos opcionales o una API menos potente para evitar advertencias alarmantes. Si deseas conocer las prácticas recomendadas para las advertencias, consulta los Lineamientos sobre advertencias de permisos. Las advertencias específicas se enumeran con los permisos a los que se aplican en la lista de referencia de Permisos.
Si agregas o cambias patrones de coincidencia en los campos "host_permissions"
y "content_scripts.matches"
del archivo de manifiesto, también se activará una advertencia. Para obtener más información, consulta Actualiza permisos.
Permitir acceso
Si tu extensión necesita ejecutarse en URLs de file://
o en modo Incógnito, los usuarios deben otorgar acceso a la extensión en su página de detalles. Encontrarás las instrucciones para abrir la página de detalles en Administrar tus extensiones.
Permitir el acceso a las URLs del archivo y a las páginas de incógnito
- Haz clic con el botón derecho en el ícono de la extensión en Chrome.
Elige Administrar extensión.
Desplázate hacia abajo para habilitar el acceso a las URLs del archivo o al modo Incógnito.
Para detectar si el usuario permitió el acceso, puedes llamar a extension.isAllowedIncognitoAccess()
o extension.isAllowedFileSchemeAccess()
.