Nutzersteuerung für Hostberechtigungen: Umstellungsleitfaden

Zusammenfassung

Was ändert sich?

Ab Chrome 70 haben Nutzer die Möglichkeit, den Zugriff des Erweiterungshosts auf eine benutzerdefinierte Liste mit Websites oder Erweiterungen so konfigurieren, dass für den Zugriff auf die aktuelle Seite ein Klick erforderlich ist.

Welche APIs sind betroffen?

Diese Änderung betrifft alle APIs, die von den Hostberechtigungen betroffen sind, die in den sowie Inhaltsskripte. APIs, die Hostberechtigungen erfordern, sind webRequest, cookies, tabs.executeScript() und tabs.insertCSS() und die ursprungsübergreifende Durchführung von -Anfragen an, z. B. über XMLHTTPRequest oder die fetch() API.

Zugriff einschränken

Wie kann der Nutzer den Zugriff einschränken?

Nutzer können festlegen, ob Ihre Erweiterung bei einem Klick, auf einer bestimmten Gruppe von Websites oder auf allen die angefragten Websites. Diese Optionen werden Nutzern auf der chrome://extensions-Seite sowie im Kontextmenü der Erweiterung.

Screenshot der Steuerelemente des Kontextmenüs für Laufzeithostberechtigungen
            einschließlich Optionen zum Ausführen der Erweiterung bei einem Klick, auf einer bestimmten Website oder auf allen Websites.

Was passiert, wenn ein Nutzer sich dafür entscheidet, meine Erweiterung „bei Klick“ auszuführen?

Die Erweiterung verhält sich im Wesentlichen so, als hätte sie die Berechtigung activeTab verwendet. Die Erweiterung ist gewährten temporären Zugriff auf einen Host, auf den der Nutzer auf die Erweiterung klickt, wenn dieser Host von die Erweiterung installiert ist (und keine eingeschränkte Website wie chrome://settings). Ist die Option so eingestellt, dass sie beim Klicken ausgeführt wird, Chrome kennzeichnet Ihre Erweiterung mit einem Kreis und einem Schlagschatten (siehe unten), um anzuzeigen, dass sie um Zugriff auf eine bestimmte Website zu erhalten.

Screenshot der Kennzeichnung von Chrome, die dem Erweiterungssymbol in der Symbolleiste hinzugefügt wird

Was passiert, wenn ein Nutzer meine Erweiterung auf bestimmten Websites ausführt?

Ihre Erweiterung darf automatisch auf allen vom Nutzer ausgewählten Websites ausgeführt werden und kann auf die ohne weitere Nutzeraktion. Auf anderen Websites, die von Ihrer Erweiterung angefordert wurden, der Nutzer aber dies nicht getan hat Berechtigung erteilt wird, ist das Verhalten gleich, als ob der Nutzer die Erweiterung so eingestellt hätte, dass sie per Klick ausgeführt wird.

Was passiert, wenn ein Nutzer meine Erweiterung auf allen Websites ausführt?

Die Erweiterung kann automatisch auf alle im Manifest angeforderten Websites zugreifen.

API-Verhaltensweisen

Web Request API

Die Erweiterung kann dennoch Anfragen von Websites abfangen, ändern und blockieren, auf die sie Zugriff hat. Für Websites, auf die die Erweiterung keinen Zugriff hat, wird die Erweiterung durch Chrome mit einem Logo gekennzeichnet. -Erweiterung fordert Zugriff auf die Seite an. Der Nutzer kann dann Zugriff auf die Erweiterung gewähren. Chrome dann fordert den Nutzer auf, die Seite zu aktualisieren, damit die Erweiterung die Netzwerkanfragen abfangen kann.

Inhaltsskripte, Registerkarten.executeScript(), Registerkarten.insertCSS()

Über die Erweiterung können weiterhin automatisch Skripts und Stylesheets für Websites eingefügt werden, auf die sie Zugriff hat an. Bei Websites, auf die die Erweiterung keinen Zugriff hat, markiert Chrome die Erweiterung, um darauf hinzuweisen, über die Erweiterung Zugriff auf die Seite anfordert. Der Nutzer kann dann Zugriff auf die Erweiterung gewähren. Wenn die wurde das Inhaltsskript unter "document_idle" auf "Injection" gesetzt, wird das Skript sofort eingefügt. Andernfalls Chrome fordert den Nutzer auf, die Seite zu aktualisieren, damit Ihre Erweiterung Skripts früher einfügen kann. Seitenaufbau (bei „document_start“ oder „document_end“). Die Callbacks für die Methoden tabs.executeScript() und tabs.insertCSS()-Methoden werden nur aufgerufen, wenn der Nutzer Zugriff auf die Website gewährt.

Cookies und Hintergrundseite XHR

Die Erweiterung kann immer noch alle Cookies von ihnen lesen und ändern und eine ursprungsübergreifende XHR auf Websites ausführen, auf denen sie verwendet wird auf die das Unternehmen zugreifen kann. Da keiner Erweiterungsseite ein Tab zugeordnet ist, der auf die Seiten eines anderen Ursprungs zugreift, oder XHR zu einem anderen Host führt, weist Chrome die Erweiterung nicht darauf hin, dass der Nutzer die Erweiterung den Zugriff auf eine Website anfordert. Der Versuch, auf ein Cookie für eine andere Website zuzugreifen oder ein ursprungsübergreifende XHR schlägt fehl und ein Fehler wird so ausgegeben, dass der Host nicht im Manifest der Erweiterung enthalten wäre. Berechtigung. In diesen Fällen empfehlen wir, optionale Berechtigungen zu verwenden, damit der Nutzer um verschiedenen Websites Laufzeitzugriff zu gewähren.

Das folgende Beispiel zeigt, wie dies für die Cookies API funktionieren kann.

Vorher:

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

Nachher:

{
  ...
  "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

Welche Best Practices gibt es, um negative Auswirkungen zu vermeiden?

Erweiterungen können die APIs optionale Berechtigungen, activeTab und declarativeContent verwenden. Best Practices zu befolgen. Optionale Berechtigungen werden zur Laufzeit gewährt und ermöglichen der Erweiterung, speziellen Zugriff auf eine Website anfordern. Die Berechtigung activeTab ist nicht betroffen und Erweiterungen wie gewohnt funktionieren. Die declarativeContent API ist ein Ersatz für viele Anforderungen um Skripts in jede Seite einzufügen.

Was passiert mit den Einstellungen meiner aktuellen Nutzer? Einstellungen?

Diese Änderung wirkt sich nicht sofort auf die aktuellen Berechtigungen aus, die Ihrer Erweiterung gewährt werden. Das heißt: Sie funktionieren weiterhin wie bisher, es sei denn, der Nutzer ergreift Maßnahmen, um die Websites, auf die er sich bezieht, einzuschränken. auf die Sie zugreifen dürfen. In zukünftigen Versionen bietet Chrome mehr Einstellungsmöglichkeiten für Nutzer. Einstellungen.

Wie finde ich heraus, ob meine Erweiterung die Berechtigung hat, auf einer Website ausgeführt zu werden?

Mit der API permissions.contains() können Sie prüfen, ob Ihre Erweiterung Zugriff auf einen bestimmten Ursprung gewährt.