Übereinstimmungsmuster
Übereinstimmungsmuster sind eine Möglichkeit, Gruppen von URLs zu spezifizieren: Ein Übereinstimmungsmuster entspricht einer bestimmten Menge von URLs. Sie werden an einigen Stellen in WebExtensions-APIs verwendet, insbesondere um anzugeben, in welche Dokumente Inhalts-Skripte geladen werden sollen, und um anzugeben, welchen URLs webRequest-Listener hinzugefügt werden sollen.
APIs, die Übereinstimmungsmuster verwenden, akzeptieren normalerweise eine Liste von Übereinstimmungsmustern und führen die entsprechende Aktion aus, wenn die URL mit einem der Muster übereinstimmt. Siehe zum Beispiel den content_scripts Schlüssel in manifest.json.
Struktur eines Übereinstimmungsmusters
Hinweis: Einige Browser unterstützen bestimmte Schemas nicht. Überprüfen Sie die Browser-Kompatibilitätstabelle für Details.
Alle Übereinstimmungsmuster werden als Zeichenfolgen angegeben. Abgesehen vom speziellen Muster <all_urls> bestehen Übereinstimmungsmuster aus drei Teilen: scheme, host und path. Das Schema und der Host werden durch :// getrennt.
<scheme>://<host><path>
scheme
Der scheme-Bestandteil kann eine von zwei Formen annehmen:
| Form | Treffer |
|---|---|
* |
Nur "http" und "https" und in einigen Browsern auch "ws" und "wss". |
Eines von http, https, ws,
wss, ftp, data,
file oder (chrome-)extension.
|
Nur das angegebene Schema. |
host
Der host-Bestandteil kann eine der folgenden Formen annehmen:
| Form | Treffer |
|---|---|
* |
Jeder Host. |
*. gefolgt von einem Teil des Hostnamens, optional inklusive eines Ports. |
Der angegebene Host (und Port) und alle seine Subdomains. |
| Ein vollständiger Hostname, ohne Wildcards, optional inklusive eines Ports. | Nur der Host (und Port). |
Hinweis: Firefox unterstützt aufgrund von (Firefox Bug 1362809) und (Firefox Bug 1468162) nicht die Einbindung einer Portnummer.
host ist nur optional, wenn scheme "file" ist.
Beachten Sie, dass das Wildcard-Zeichen nur am Anfang erscheinen darf.
path
Der path-Bestandteil muss mit einem / beginnen.
Danach kann es jede Kombination aus dem *-Wildcard und allen Zeichen enthalten, die in URL-Pfaden oder Abfragezeichenfolgen erlaubt sind. Im Gegensatz zu host kann der path-Bestandteil das *-Wildcard in der Mitte oder am Ende enthalten, und das *-Wildcard kann mehrmals erscheinen.
Der Wert für den path stimmt mit dem String überein, der der URL-Pfad plus der URL-Abfragezeichenfolge ist. Dies schließt das ? zwischen den beiden ein, falls die Abfragezeichenfolge in der URL vorhanden ist. Wenn Sie beispielsweise URLs auf einer beliebigen Domain abgleichen möchten, bei denen der URL-Pfad mit foo.bar endet, müssen Sie ein Array von Übereinstimmungsmustern wie ["*://*/*foo.bar", "*://*/*foo.bar?*"] verwenden. Das ?* ist notwendig, statt nur bar*, um das Ende * als Anwendung auf die URL-Abfragezeichenfolge zu verankern und nicht auf einen Teil des URL-Pfads.
Weder der URL-Fragment-Identifikator noch das #, das ihm vorangeht, werden als Teil des path betrachtet und werden beim Mustermatching ignoriert. Ein Übereinstimmungsmuster, das # enthält, wird mit keiner URL übereinstimmen.
<all_urls>
Der spezielle Wert <all_urls> stimmt mit allen URLs unter jedem der unterstützten Schemata überein: das heißt "http", "https", "ws", "wss", "ftp", "data" und "file".
Beispiele
| Muster | Beispiele für Übereinstimmungen | Beispiele für Nicht-Übereinstimmungen |
|---|---|---|
|
Übereinstimmung mit allen URLs. |
|
|
|
Übereinstimmung mit allen HTTP-, HTTPS- und WebSocket-URLs. |
|
|
|
Übereinstimmung mit allen HTTP-, HTTPS- und WebSocket-URLs, die auf "mozilla.org" oder einer seiner Subdomains gehostet werden. |
|
|
|
Übereinstimmung mit allen HTTP-, HTTPS- und WebSocket-URLs, die genau auf "mozilla.org/" gehostet werden. |
|
|
|
Übereinstimmung mit allen HTTPS-URLs, die auf "mozilla.org/" auf Port 8080 gehostet werden. Hinweis: Ports werden in Chrome unterstützt, nicht in Firefox. |
|
|
|
Übereinstimmung nur mit "ftp://mozilla.org/". |
ftp://mozilla.org |
|
|
Übereinstimmung mit HTTPS-URLs auf jedem Host, deren Pfad "path" ist. |
|
|
|
Übereinstimmung mit HTTPS-URLs auf jedem Host, deren Pfad "path/" ist und die keine URL-Abfragezeichenkette haben. |
|
|
|
Übereinstimmung mit HTTPS-URLs nur bei "mozilla.org", mit jedem URL-Pfad und jeder URL-Abfragezeichenkette. |
|
|
|
Übereinstimmung nur mit dieser URL oder dieser URL mit beliebigem URL-Fragment. |
|
Alles andere. |
|
Übereinstimmung mit HTTPS-URLs, die auf "mozilla.org" gehostet werden und deren Pfad irgendwo in der Mitte eine Komponente "b" enthält. Wird URL mit Abfragezeichenfolgen entsprechen, wenn die Zeichenfolge mit einem |
|
|
|
Übereinstimmung mit jeder FILE-URL, deren Pfad mit "blah" beginnt. |
|
file:///bleh/(nicht übereinstimmender Pfad) |
Ungültige oder nicht übereinstimmende Muster
| Muster | Problem | Grund |
|---|---|---|
resource://path/ |
Ungültig | Nicht unterstütztes Schema. |
https://mozilla.org |
Ungültig | Kein Pfad. |
https://www.mozilla.org/#section1 |
Nicht übereinstimmend | Enthält ein Referenzfragment: Die URL, mit der das Muster übereinstimmt, hat jedes Referenzfragment entfernt, bevor es übereinstimmt. |
https://mozilla.*.org/ |
Ungültig | "*" im Host muss am Anfang stehen. |
https://*zilla.org/ |
Ungültig | "*" im Host muss das einzige Zeichen sein oder von "." gefolgt werden. |
http*://mozilla.org/ |
Ungültig | "*" im Schema muss das einzige Zeichen sein. |
*://* |
Ungültig | Leerer Pfad: Dies sollte *://*/* sein. |
file://* |
Ungültig | Leerer Pfad: Dies sollte file:///* sein. file://* wird akzeptiert, wenn es in host_permissions in Chrome erklärt wird, was den Eintrag automatisch zu file:///* korrigiert. |