Overeenkomen met patronen

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 http of file of *

    Let op: Toegang tot file URL's is niet automatisch. De gebruiker moet de pagina voor extensiebeheer bezoeken en voor elke extensie die erom vraagt, toestemming geven voor file .
  • host — bijvoorbeeld www.google.com of *.google.com of * ; als het schema file is, is er geen host- gedeelte

  • pad — bijvoorbeeld /* , /foo* , of /foo/bar . Het pad moet aanwezig zijn in een host-permissie, maar wordt altijd behandeld als /* .

Hier is de basissyntaxis:

&lt;url-pattern&gt; := &lt;scheme&gt;://&lt;host&gt;&lt;path&gt;
&lt;scheme&gt; := '*' | 'http' | 'https' | 'file' | 'ftp' | 'urn'
&lt;host&gt; := '*' | '*.' &lt;any char except '/' and '*'&gt;+
&lt;path&gt; := '/' &lt;any chars&gt;

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.