Commandes utilisateur pour les autorisations d'organisateur: guide de transition

Résumé

Ce qui change

À partir de Chrome 70, les utilisateurs ont la possibilité de restreindre l'accès de l'hôte des extensions à une liste personnalisée de ou configurer des extensions de sorte qu'elles nécessitent un clic pour accéder à la page active.

Quelles sont les API concernées ?

Cette modification a une incidence sur toutes les API concernées par les autorisations d'hôte spécifiées dans les le fichier manifeste, ainsi que les scripts de contenu. Les API qui nécessitent des autorisations d'hôte incluent webRequest, cookies, tabs.executeScript() et tabs.insertCSS(), et utilisent l'analyse multi-origine requêtes, par exemple via une API XMLHTTPRequest ou fetch().

Restreindre l'accès

Comment l'utilisateur peut-il restreindre l'accès ?

Les utilisateurs peuvent choisir d'autoriser la diffusion de votre extension lors d'un clic, sur un ensemble spécifique de sites ou sur tous les sites demandés. Ces options sont présentées aux utilisateurs sur la page chrome://extensions ainsi que sur dans le menu contextuel des extensions.

Capture d'écran des commandes du menu contextuel pour les autorisations d'exécution de l'hôte
            y compris des options permettant d'exécuter l'extension lors d'un clic, sur un site spécifique ou sur tous les sites.

Que se passe-t-il si un utilisateur choisit de diffuser mon extension lors d'un clic ?

L'extension se comporte essentiellement comme si elle utilisait l'autorisation activeTab. L'extension est a accordé un accès temporaire à tout hôte sur lequel l'utilisateur clique sur l'extension, si cet hôte a été demandé par l'extension (et n'est pas un site à accès restreint, comme chrome://settings). Si elle est configurée pour s'exécuter par clic, Chrome marque votre extension d'un cercle et d'une ombre projetée (voir ci-dessous) pour indiquer qu'elle est demandant l'accès à un site particulier.

Capture d'écran du badge ajouté par Chrome à l'icône de l'extension dans la barre d'outils

Que se passe-t-il si un utilisateur choisit d'exécuter mon extension sur des sites spécifiques ?

Votre extension est autorisée à s'exécuter automatiquement sur tous les sites choisis par l'utilisateur et à accéder aux sans action supplémentaire de la part de l'utilisateur. sur d'autres sites demandés par votre extension, mais pas par l'utilisateur. le comportement est le même que si l'utilisateur avait configuré l'extension pour qu'elle s'exécute suite à un clic.

Que se passe-t-il si un utilisateur choisit d'exécuter mon extension sur tous les sites ?

L'extension peut accéder automatiquement à tous les sites demandés dans le fichier manifeste.

Comportements de l'API

API Web Request

L'extension peut toujours intercepter, modifier et bloquer les requêtes provenant des sites auxquels elle a accès. Pour sites auxquels l'extension n'a pas accès, Chrome attribue un badge à l'extension pour indiquer que demande l'accès à la page. L'utilisateur peut alors accorder l'accès à l'extension. Chrome, puis invite l'utilisateur à actualiser la page pour permettre à votre extension d'intercepter les requêtes réseau.

Scripts de contenu, tab.executeScript() et tab.insertCSS()

L'extension peut toujours injecter automatiquement des scripts et des feuilles de style pour tous les sites auxquels elle a accès. auxquelles vous souhaitez vous connecter. Pour les sites auxquels l'extension n'a pas accès, Chrome attribue un badge à l'extension pour indiquer que l'extension demande l'accès à la page. L'utilisateur peut ensuite accorder l'accès à l'extension. Si le content script a été configuré pour injecter dans document_idle, le script injectera immédiatement. Sinon, Chrome invite l'utilisateur à actualiser la page pour permettre à votre extension d'injecter des scripts plus tôt dans (au début du document ou à la fin du document). Les rappels pour tabs.executeScript() et Les méthodes tabs.insertCSS() ne sont appelées que si l'utilisateur autorise l'accès au site.

Cookies et page d'arrière-plan XHR

L'extension peut toujours lire et modifier les cookies provenant de et exécuter une requête XHR multi-origine sur les sites qu'elle a accès. Comme aucun onglet n'est associé à une page d'extension permettant d'accéder à la couche ou XHRing vers un autre hôte, Chrome ne badge pas l'extension pour indiquer à l'utilisateur que demande à accéder à un site. Essayer d'accéder au cookie d'un autre site ou de créer La requête XHR multi-origine échouera et renverra une erreur comme si le fichier manifeste de l'extension n'incluait pas l'hôte. l'autorisation. Dans ce cas, nous vous encourageons à utiliser des autorisations facultatives afin de permettre à l'utilisateur pour accorder un accès en exécution à différents sites.

L'exemple ci-dessous montre comment cela peut fonctionner pour l'API pour les cookies.

Avant :

{
  ...
  "permissions": ["cookies", "https://example.com"]
}
chrome.cookies.get({url: 'https://example.com', name: 'mycookie'},
                    function(cookie) {
                      // Use the cookie.
                    });

Après :

{
  ...
  "permissions": ["cookies"],
  "optional_permissions": ["https://example.com"]
}
// Note: permissions.request() requires a user gesture, so this
// may only be done in response to a user action.
chrome.permissions.request(
    {origins: ['https://example.com']},
    function(granted) {
      if (granted) {
        chrome.cookies.get({url: 'https://example.com', name: 'mycookie'},
                            function(cookie) {
                              // Use the cookie.
                            });
      } else {
        // Handle grant failure
      }
    });

Migration

Quelles sont les bonnes pratiques pour éviter tout impact négatif ?

Les extensions peuvent utiliser les API d'autorisations facultatives, activeTab et declarativeContent. de suivre les bonnes pratiques. Des autorisations facultatives sont accordées au moment de l'exécution, demander un accès spécifique à un site. L'autorisation activeTab n'est pas affectée, et les extensions l'utilisent continuent de fonctionner normalement. L'API declarativeContent peut remplacer de nombreux besoins pour injecter des scripts dans chaque page.

Qu'advient-il des comptes utilisateur paramètres ?

Ce changement n'affectera pas immédiatement les autorisations actuellement accordées à votre extension. En d'autres termes, il continuera de fonctionner comme auparavant, sauf si l'utilisateur prend des mesures pour restreindre les sites dont il est n'ont pas l'accès requis. Dans les prochaines versions, Chrome proposera davantage de commandes aux utilisateurs pour s'adapter paramètres.

Comment vérifier si mon extension est autorisée à s'exécuter sur un site ?

Vous pouvez utiliser l'API permissions.contains() afin de vérifier si votre extension a été dont l'accès est accordé à une origine donnée.