Hostrechten en het matchen van contentscripts zijn gebaseerd op een set URL's die zijn gedefinieerd door matchpatronen. Een matchpatroon is in principe een URL die begint met een toegestaan schema ( http , https , file of ftp ) en die ' * ' tekens kan bevatten. Het speciale patroon <all_urls> komt overeen met elke URL die begint met een toegestaan schema. Elk matchpatroon bestaat uit 3 delen:
schema — bijvoorbeeld
httpoffileof*Let op: Toegang totfileURL's is niet automatisch. De gebruiker moet de pagina voor extensiebeheer bezoeken en voor elke extensie die erom vraagt, toestemming geven voorfile.host — bijvoorbeeld
www.google.comof*.google.comof*; als het schemafileis, is er geen host- gedeeltepad — bijvoorbeeld
/*,/foo*, of/foo/bar. Het pad moet aanwezig zijn in een host-permissie, maar wordt altijd behandeld als/*.
Hier is de basissyntaxis:
<url-pattern> := <scheme>://<host><path>
<scheme> := '*' | 'http' | 'https' | 'file' | 'ftp' | 'urn'
<host> := '*' | '*.' <any char except '/' and '*'>+
<path> := '/' <any chars>
De betekenis van ' * ' hangt af van of het in het schema , de host of het pad staat. Als het schema * is, komt het overeen met http of https , en niet file , ftp of urn . Als de host alleen * is, komt het overeen met elke host. Als de host *._hostname_ is, komt het overeen met de opgegeven host of een van de subdomeinen ervan. In het padgedeelte komt elke ' * ' overeen met 0 of meer tekens. De volgende tabel toont enkele geldige patronen.
| Patroon | Wat het doet | Voorbeelden van overeenkomende URL's |
|---|---|---|
http://*/* | Komt overeen met elke URL die het http schema gebruikt. | http://www.google.com/ http://example.org/foo/bar.html |
http://*/foo* | Komt overeen met elke URL die het http schema gebruikt, op elke host, zolang het pad maar begint met /foo | http://example.com/foo/bar.html http://www.google.com/foo |
https://*.google.com/foo*bar | Komt overeen met elke URL die het https schema gebruikt en zich op een google.com-host bevindt (zoals www.google.com, docs.google.com of google.com), zolang het pad begint met /foo en eindigt met bar | https://www.google.com/foo/baz/bar https://docs.google.com/foobar |
http://example.org/foo/bar.html | Komt overeen met de opgegeven URL. | http://example.org/foo/bar.html |
file:///foo* | Komt overeen met elk lokaal bestand waarvan het pad begint met /foo | file:///foo/bar.html bestand:///foo |
http://127.0.0.1/* | Komt overeen met elke URL die het http schema gebruikt en zich op de host 127.0.0.1 bevindt. | http://127.0.0.1/ http://127.0.0.1/foo/bar.html |
*://mail.google.com/* | Komt overeen met elke URL die begint met http://mail.google.com of https://mail.google.com . | http://mail.google.com/foo/baz/bar https://mail.google.com/foobar |
urn:* | Komt overeen met elke URL die begint met urn: . | urn:uuid:54723bea-c94e-480e-80c8-a69846c3f582 urn:uuid:cfa40aff-07df-45b2-9f95-e023bcf4a6da |
<all_urls> | Komt overeen met elke URL die gebruikmaakt van een toegestaan schema. (Zie het begin van deze sectie voor de lijst met toegestane schema's.) | http://example.org/foo/bar.html file:///bar/baz.html |
Hier volgen enkele voorbeelden van ongeldige patroonovereenkomsten:
| Slecht patroon | Waarom het slecht is |
|---|---|
http://www.google.com | Geen pad |
http://*foo/bar | '*' in de host mag alleen gevolgd worden door een '.' of '/'. |
http://foo.*.bar/baz | Als '*' in de host voorkomt, moet het het eerste teken zijn. |
http:/bar | Ontbrekende schema- scheidingsteken ("/" zou "//") moeten zijn. |
foo://* | Ongeldig schema |
Sommige regelingen worden niet in alle contexten ondersteund.