Manifest – Im Web zugängliche Ressourcen

Im Web zugängliche Ressourcen sind Dateien in einer Erweiterung, auf die von Webseiten oder anderen Erweiterungen. Erweiterungen nutzen diese Funktion in der Regel, um Bilder oder andere Assets zu präsentieren, die auf Webseiten geladen werden, aber alle im Bundle einer Erweiterung enthaltenen Assets können für das Web zugänglich gemacht werden.

Standardmäßig sind keine Ressourcen über das Internet zugänglich, da schädliche Websites so einen Fingerabdruck von Erweiterungen erhalten können, die Nutzer bereits installiert haben oder Sicherheitslücken (z. B. XSS-Fehler) in installierten Erweiterungen ausnutzen. Nur Seiten oder Skripts, die vom Ursprung einer Erweiterung geladen werden auf die Ressourcen dieser Erweiterung zugreifen kann.

Manifestdeklaration

Mit dem Manifestattribut web_accessible_resources kannst du deklarieren, welche Ressourcen welche Ursprünge sind. Diese Eigenschaft ist ein Array von Objekten, die Ressourcenzugriffsregeln deklarieren. Jedes Objekt eine Reihe von Erweiterungsressourcen auf und muss einen Wert für mindestens eine der matches- oder extension_ids-Schlüssel, 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 von Strings, die jeweils einen relativen Pfad zu einer bestimmten Ressource aus dem Stammverzeichnis der Erweiterung enthalten. Ressourcen können Sternchen (*) für Platzhalterübereinstimmungen enthalten. Mit "/images/*" wird beispielsweise rekursiv alles im Verzeichnis images/ der Erweiterung verfügbar gemacht, mit "*.png" dagegen alle PNG-Dateien.
"matches"
Ein Array von Strings, die jeweils ein Übereinstimmungsmuster enthalten, das angibt, welche Websites auf diese Ressourcengruppe zugreifen können. Für den Abgleich von URLs wird nur der Ursprung verwendet. Zu den Ursprüngen gehört auch der Abgleich von Subdomains. Google Chrome gibt die Meldung „Ungültiges Übereinstimmungsmuster“ aus Fehler, wenn das Muster einen anderen Pfad als „/*“ hat.
"extension_ids"
Ein Array mit Strings, die jeweils die ID einer Erweiterung enthalten, 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, durch die die angegebenen Ressourcen entweder Webseiten, die dem Muster entsprechen, oder Erweiterungen mit übereinstimmenden IDs verfügbar gemacht werden.

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

Die Navigation von einem Webursprung zu einer Erweiterungsressource wird blockiert, es sei denn, die Ressource ist als über das Internet zugänglich aufgeführt. Beachten Sie folgende Sonderfälle:

  • Wenn eine Erweiterung die webRequest API zum Weiterleiten einer öffentlichen Ressourcenanfrage an eine Ressource, die nicht über das Internet zugänglich ist, wird eine solche Anfrage ebenfalls blockiert.
  • Weiterleitungen von öffentlichen Ressourcen werden blockiert, auch wenn die Ressource, auf die nicht über das Internet zugegriffen werden kann, der Weiterleitung gehört. .
  • Die Navigation ist im Inkognitomodus blockiert, es sei denn, der Wert des Felds "incognito" ist auf "split" gesetzt.

Content-Skripts selbst müssen nicht zulässig sein.

Beispiel

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