Mustermuster
Mustermuster sind eine Möglichkeit, Gruppen von URLs zu spezifizieren: Ein Mustermuster entspricht einer bestimmten Gruppe von URLs. Sie werden in WebExtensions APIs an einigen Stellen verwendet, vor allem um anzugeben, in welche Dokumente Inhalts-Skripte geladen werden sollen, und um anzugeben, auf welche URLs webRequest
Listener hinzugefügt werden sollen.
APIs, die Mustermuster verwenden, akzeptieren normalerweise eine Liste von Mustermustern 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 von Mustermustern
Hinweis: Einige Browser unterstützen bestimmte Schemata nicht. Überprüfen Sie die Tabelle zur Browser-Kompatibilität für Details.
Alle Mustermuster sind als Zeichenfolgen angegeben. Abgesehen vom speziellen <all_urls>
Muster bestehen Mustermuster aus drei Teilen: scheme, host und path. Das Schema und der Host sind durch ://
getrennt.
<scheme>://<host><path>
scheme
Die Komponente scheme kann eine von zwei Formen annehmen:
Form | Entspricht |
---|---|
* |
Nur "http" und "https" und in einigen Browsern auch "ws" und "wss". |
Eine der folgenden: http , https , ws ,
wss , ftp , data ,
file , oder (chrome-)extension .
|
Nur das angegebene Schema. |
host
Die Komponente host kann eine von drei Formen annehmen:
Form | Entspricht |
---|---|
* |
Jeder Host. |
*. gefolgt von einem Teil des Hostnamens. |
Der angegebene Host und alle seine Subdomains. |
Ein vollständiger Hostname ohne Platzhalter. | Nur der angegebene Host. |
host darf keine Portnummer enthalten.
host ist nur optional, wenn das scheme "file" ist.
Beachten Sie, dass der Platzhalter nur am Anfang stehen darf.
path
Die Komponente path muss mit einem /
beginnen.
Danach kann sie jede Kombination des *
Platzhalters und der Zeichen enthalten, die in URL-Pfaden oder Abfragezeichenfolgen erlaubt sind. Im Gegensatz zu host kann die Komponente path den *
Platzhalter in der Mitte oder am Ende enthalten, und der *
Platzhalter kann mehrmals auftauchen.
Der Wert für den path wird mit dem String abgeglichen, der der URL-Pfad plus die URL-Abfragezeichenfolge ist. Dazu gehört das ?
zwischen den beiden, wenn die Abfragezeichenfolge in der URL vorhanden ist. Zum Beispiel, wenn Sie URLs auf einer beliebigen Domain abgleichen wollen, bei denen der URL-Pfad mit foo.bar
endet, dann müssen Sie ein Array von Mustermustern wie ["*://*/*foo.bar", "*://*/*foo.bar?*"]
verwenden. Das ?*
wird benötigt, anstatt einfach bar*
, um das Ende *
als auf die URL-Abfragezeichenfolge anwendbar zu verankern und nicht auf einen Teil des URL-Pfads.
Weder der URL-Fragment-Identifier noch das #
, das ihm vorausgeht, werden als Teil des path betrachtet.
Hinweis:
Der Path-Muster-String sollte keine Portnummer enthalten. Das Hinzufügen eines Ports, wie in: http://localhost:1234/*
, führt dazu, dass das Mustermuster ignoriert wird. Jedoch, http://localhost:1234
wird mit http://localhost/*
übereinstimmen.
<all_urls>
Der spezielle Wert <all_urls>
entspricht allen URLs unter einem der unterstützten Schemata: das heißt "http", "https", "ws", "wss", "ftp", "data" und "file".
Beispiele
Muster | Beispielhafte Übereinstimmungen | Beispielhafte Nicht-Übereinstimmungen |
---|---|---|
Entspricht allen URLs. |
|
|
Entspricht allen HTTP-, HTTPS- und WebSocket-URLs. |
|
|
Entspricht allen HTTP-, HTTPS- und WebSocket-URLs, die bei "mozilla.org" oder einer seiner Subdomains gehostet werden. |
|
|
Entspricht allen HTTP-, HTTPS- und WebSocket-URLs, die exakt bei "mozilla.org/" gehostet werden. |
|
|
Entspricht nur "ftp://mozilla.org/". |
ftp://mozilla.org |
|
Entspricht HTTPS-URLs auf jedem Host, deren Pfad "path" ist. |
|
|
Entspricht HTTPS-URLs auf jedem Host, deren Pfad "path/" ist und die keine URL-Abfragezeichenfolge haben. |
|
|
Entspricht HTTPS-URLs nur bei "mozilla.org", mit jedem URL-Pfad und jeder URL-Abfragezeichenfolge. |
|
|
Entspricht nur dieser URL oder dieser URL mit jedem URL-Fragment. |
|
Alles andere. |
Entspricht HTTPS-URLs, die bei "mozilla.org" gehostet sind und deren
Pfad irgendwo in der Mitte eine Komponente "b" enthält. Wird mit
URLs mit Abfragezeichenfolgen übereinstimmen, wenn der String mit
einem |
|
|
Entspricht jeder FILE-URL, deren Pfad mit "blah" beginnt. |
|
file:///bleh/ (nicht übereinstimmender Pfad) |
Ungültige Mustermuster
Ungültiges Muster | Grund |
---|---|
resource://path/ |
Nicht unterstütztes Schema. |
https://mozilla.org |
Kein Pfad. |
https://mozilla.*.org/ |
"*" im Host muss am Anfang stehen. |
https://*zilla.org/ |
"*" im Host muss das einzige Zeichen sein oder von "." gefolgt werden. |
http*://mozilla.org/ |
"*" im Schema muss das einzige Zeichen sein. |
https://mozilla.org:80/ |
Host darf keine Portnummer enthalten. |
*://* |
Leerer Pfad: dies sollte *://*/* sein. |
file://* |
Leerer Pfad: dies sollte file:///* sein. |