Patrones de coincidencia

Los permisos del host y las coincidencias de secuencias de comandos de contenido se basan en un conjunto de URLs definidas por coincidencia. o patrones. Básicamente, un patrón de coincidencia es una URL que comienza con un esquema permitido (http, https, file o ftp, que puede contener “*” caracteres. El patrón especial <all_urls> coincide cualquier URL que comience con un esquema permitido. Cada patrón de coincidencia tiene 3 partes:

  • scheme: por ejemplo, http, file o *

    Nota: El acceso a las URLs de file no es automático. El usuario debe visitar la página de administración de extensiones y habilitar el acceso de file para cada extensión que lo solicite.
  • host, por ejemplo, www.google.com, *.google.com o * si el esquema es file, hay sin parte del host

  • path, por ejemplo, /*, /foo* o /foo/bar. La ruta de acceso debe estar presente en un permiso de host. pero siempre se trata como /*.

Esta es la sintaxis básica:

&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;

Significado de "*" depende de si se encuentra en la parte esquema, host o ruta de acceso. Si el botón scheme es *, luego coincide con http o https, y no file, ftp ni urn. Si el botón host es solo * y coincide con cualquier host. Si el host es *._hostname_, entonces coincide con el host especificado o cualquiera de sus subdominios. En la sección path, cada "*" coincide con 0 o más caracteres. En la siguiente tabla, se muestran algunos patrones válidos.

PatrónQué haceEjemplos de URL coincidentes
http://*/*Coincide con cualquier URL que use el esquema httphttp://www.google.com/
http://example.org/foo/bar.html
http://*/foo*Coincide con cualquier URL que use el esquema http en cualquier host, siempre y cuando la ruta comience con /foohttp://example.com/foo/bar.html
http://www.google.com/foo
https://*.google.com/foo*barCoincide con cualquier URL que use el esquema https, que se encuentre en un host google.com (como www.google.com, docs.google.com o google.com), siempre que la ruta de acceso comience con /foo y termine con barhttps://www.google.com/foo/baz/bar
https://docs.google.com/foobar
http://example.org/foo/bar.htmlCoincide con la URL especificadahttp://example.org/foo/bar.html
file:///foo*Coincide con cualquier archivo local cuya ruta de acceso comienza con /foo.file:///foo/bar.html
file:///foo
http://127.0.0.1/*Coincide con cualquier URL que utilice el esquema http y esté en el host 127.0.0.1http://127.0.0.1/
http://127.0.0.1/foo/bar.html
*://mail.google.com/*Coincide con cualquier URL que comience con http://mail.google.com o https://mail.google.com.http://mail.google.com/foo/baz/bar
https://mail.google.com/foobar
urn:*Coincide con cualquier URL que comience con urn:.urn:uuid:54723bea-c94e-480e-80c8-a69846c3f582
urn:uuid:cfa40aff-07df-45b2-9f95-e023bcf4a6da
<all_urls>Coincide con cualquier URL que use un esquema permitido. (Consulta el comienzo de esta sección para conocer la lista de esquemas permitidos).http://example.org/foo/bar.html
file:///bar/baz.html

Estos son algunos ejemplos de coincidencias de patrones no válidos:

Patrón incorrecto¿Por qué es malo?
http://www.google.comSin ruta
http://*foo/bar“*” en el host solo puede seguirle un '.' o “/”
http://foo.*.bar/baz Si '*' está en el host, debe ser el primer carácter
http:/barFalta el separador de scheme ("/" debe ser "//")
foo://*scheme no válido

Algunos esquemas no se admiten en todos los contextos.