A correspondência de permissões do host e de script de conteúdo é baseada em um conjunto de URLs definidos por padrões de
correspondência. Um padrão de correspondência é basicamente um URL que começa com um esquema permitido (http
, https
,
file
ou ftp
e que pode conter caracteres '*
'. O padrão especial <all_urls>
corresponde
a qualquer URL que comece com um esquema permitido. Cada padrão de correspondência tem três partes:
scheme, por exemplo,
http
oufile
ou*
Observação:o acesso aos URLsfile
não é automático. O usuário precisa acessar a página de gerenciamento de extensões e ativar o acessofile
para cada extensão que solicitar.host: por exemplo,
www.google.com
ou*.google.com
ou*
. Se o esquema forfile
, não haverá parte host.caminho, por exemplo,
/*
,/foo*
ou/foo/bar
. O caminho precisa estar presente em uma permissão do host, mas é sempre tratado como/*
.
A sintaxe básica é a seguinte:
<url-pattern> := <scheme>://<host><path>
<scheme> := '*' | 'http' | 'https' | 'file' | 'ftp' | 'urn'
<host> := '*' | '*.' <any char except '/' and '*'>+
<path> := '/' <any chars>
O significado de "*
" depende se ele está na parte esquema, host ou caminho. Se o
esquema for *
, ele vai corresponder a http
ou https
, e não file
, ftp
ou urn
. Se o
host for apenas *
, ele vai corresponder a qualquer host. Se o host for *._hostname_
, ele vai corresponder ao
host especificado ou a qualquer um dos subdomínios dele. Na seção caminho, cada *
corresponde a zero ou mais
caracteres. A tabela a seguir mostra alguns padrões válidos.
Padrão | O que faz? | Exemplos de URLs correspondentes |
---|---|---|
http://*/* | Corresponde a qualquer URL que usa o esquema http | http://www.google.com/ http://example.org/foo/bar.html |
http://*/foo* | Corresponde a qualquer URL que usa o esquema http em qualquer host, desde que o caminho comece com /foo . | http://example.com/foo/bar.html http://www.google.com/foo |
https://*.google.com/foo*bar | Corresponde a qualquer URL que usa o esquema https e está em um host google.com (como www.google.com, docs.google.com ou google.com), desde que o caminho comece com /foo e termine com bar . | https://www.google.com/foo/baz/bar https://docs.google.com/foobar |
http://example.org/foo/bar.html | Corresponde ao URL especificado | http://example.org/foo/bar.html |
file:///foo* | Corresponde a qualquer arquivo local cujo caminho comece com /foo | file:///foo/bar.html file:///foo |
http://127.0.0.1/* | Corresponde a qualquer URL que usa o esquema http e esteja no host 127.0.0.1 | http://127.0.0.1/ http://127.0.0.1/foo/bar.html |
*://mail.google.com/* | Corresponde a qualquer URL que comece com http://mail.google.com ou https://mail.google.com . | http://mail.google.com/foo/baz/bar https://mail.google.com/foobar |
urn:* | Corresponde a qualquer URL que comece com urn: . | urn:uuid:54723bea-c94e-480e-80c8-a69846c3f582 urn:uuid:cfa40aff-07df-45b2-9f95-e023bcf4a6da |
<all_urls> | Corresponde a qualquer URL que usa um esquema permitido. Consulte o início desta seção para ver a lista de esquemas permitidos. | http://example.org/foo/bar.html file:///bar/baz.html |
Confira alguns exemplos de correspondências de padrão inválidas:
Padrão incorreto | Por que isso é ruim |
---|---|
http://www.google.com | Nenhum caminho |
http://*foo/bar | "*" no host só pode ser seguido por "." ou "/" |
http://foo.*.bar/baz | Se "*" estiver no host, ele precisa ser o primeiro caractere |
http:/bar | O separador de esquema está faltando ("/" precisa ser "//"). |
foo://* | Esquema inválido |
Alguns esquemas não são compatíveis com todos os contextos.