Manifest – Im Web zugängliche Ressourcen

Über das Web zugängliche Ressourcen sind Dateien innerhalb einer Erweiterung, auf die über Webseiten oder andere Erweiterungen zugegriffen werden kann. Erweiterungen verwenden diese Funktion in der Regel, um Bilder oder andere Assets sichtbar zu machen, die auf Webseiten geladen werden müssen. Es kann jedoch jedes Asset im Bundle einer Erweiterung über das Web zugänglich gemacht werden.

Standardmäßig sind keine Ressourcen über das Internet zugänglich. Dies ermöglicht einer schädlichen Website, von einem Nutzer installierte Fingerabdruck-Erweiterungen zu nutzen oder Sicherheitslücken (z. B. XSS-Bugs) in installierten Erweiterungen auszunutzen. Nur Seiten oder Skripts, die aus dem Ursprung einer Erweiterung geladen werden, können auf die Ressourcen dieser Erweiterung zugreifen.

Manifestdeklaration

Verwenden Sie die Manifesteigenschaft web_accessible_resources, um zu deklarieren, welche Ressourcen und welchen Ursprüngen zugänglich sind. Diese Eigenschaft besteht aus einem Array von Objekten, die Ressourcenzugriffsregeln deklarieren. Jedes Objekt listet eine Reihe von Erweiterungsressourcen auf und muss einen Wert für mindestens einen der Schlüssel matches oder extension_ids angeben, um die Ursprünge anzugeben, die auf diese Ressourcen zugreifen können.

{
  ...
  "web_accessible_resources": [
    {
      "resources": [ "test1.png", "test2.png" ],
      "matches": [ "https://web-accessible-resources-1.glitch.me/*" ]
    }, {
      "resources": [ "test3.png", "test4.png" ],
      "matches": [ "https://web-accessible-resources-2.glitch.me/*" ]
    }
  ],
  ...
}

Jedes Objekt im Array enthält die folgenden Elemente:

"resources"
Ein Array mit Strings, von denen jeder einen relativen Pfad zu einer bestimmten Ressource aus dem Stammverzeichnis der Erweiterung enthält. Ressourcen können Sternchen (*) für Platzhalterübereinstimmungen enthalten. Beispiel: Mit "/images/*" wird alles im images/-Verzeichnis der Erweiterung rekursiv offengelegt, während bei "*.png" alle PNG-Dateien verfügbar gemacht werden.
"matches"
Ein Array mit Strings, von denen jeder ein Übereinstimmungsmuster enthält, das angibt, welche Websites auf diese Gruppe von Ressourcen zugreifen können. Nur der Ursprung wird zum Abgleich von URLs verwendet. Der Ursprung beinhaltet den Subdomain-Abgleich. Google Chrome gibt die Fehlermeldung „Ungültiges Übereinstimmungsmuster“ aus, wenn das Muster einen anderen Pfad als „/*“ enthält.
"extension_ids"
Ein Array mit Strings, von denen jeder die ID einer Erweiterung enthält, die auf die Ressourcen zugreifen kann.

Jedes Element muss ein "resources"-Element und entweder ein "matches"- oder ein "extension_ids"-Element enthalten. Dadurch wird eine Zuordnung erstellt, die die angegebenen Ressourcen entweder Webseiten enthält, die dem Muster entsprechen, oder Erweiterungen mit übereinstimmenden IDs.

Ressourcen sind auf einer Webseite über die URL chrome-extension://[PACKAGE ID]/[PATH] verfügbar, die mit der Methode runtime.getURL() generiert werden kann. Die Ressourcen werden mit entsprechenden CORS-Headern bereitgestellt, sodass sie mit fetch() verfügbar sind.

Die Navigation von einer Webursprung zu einer Erweiterungsressource wird blockiert, sofern die Ressource nicht als über das Web zugänglich aufgeführt wird. Beachten Sie die folgenden Sonderfälle:

  • Wenn eine Erweiterung die webRequest API verwendet, um eine öffentliche Ressourcenanfrage an eine Ressource weiterzuleiten, die nicht über das Web zugänglich ist, wird eine solche Anfrage ebenfalls blockiert.
  • Weiterleitungen von öffentlichen Ressourcen werden auch dann blockiert, wenn die nicht über das Web zugängliche Ressource der Weiterleitungserweiterung gehört.
  • Die Navigation ist im Inkognitomodus blockiert, es sei denn, der Wert im Feld "incognito" ist auf "split" gesetzt.

Die Content-Skripts selbst müssen nicht zugelassen werden.

Beispiel

Im Beispiel für im Web zugängliche Ressourcen wird die Verwendung dieses Elements in einer funktionierenden Erweiterung demonstriert.