El recurso que está buscando es el RFC 3986 .
Consulte la Sección 4.2 y la Sección 5.4. Citando de este último:
Ejemplos de resolución de referencia
Dentro de una representación con un URI base bien definido de:
http://a/b/c/d;p?q
una referencia relativa se transforma en su URI de destino de la siguiente manera:
"g:h" = "g:h"
"g" = "http://a/b/c/g"
"./g" = "http://a/b/c/g"
"g/" = "http://a/b/c/g/"
"/g" = "http://a/g"
"//g" = "http://g"
"?y" = "http://a/b/c/d;p?y"
"g?y" = "http://a/b/c/g?y"
"#s" = "http://a/b/c/d;p?q#s"
"g#s" = "http://a/b/c/g#s"
"g?y#s" = "http://a/b/c/g?y#s"
";x" = "http://a/b/c/;x"
"g;x" = "http://a/b/c/g;x"
"g;x?y#s" = "http://a/b/c/g;x?y#s"
"" = "http://a/b/c/d;p?q"
"." = "http://a/b/c/"
"./" = "http://a/b/c/"
".." = "http://a/b/"
"../" = "http://a/b/"
"../g" = "http://a/b/g"
"../.." = "http://a/"
"../../" = "http://a/"
"../../g" = "http://a/g"
Esto significa que cuando el URI base es http://a/b/c/d;p?q
y lo usa //g
, la referencia relativa se transforma en http://g
.
../g
: usará el protocolo actual y conducirá ahttp://a/b/c/g
.xml:base
para configurarlo explícitamente en cualquier elemento . Por defecto en HTML, el URI base es el mismo URI de la página (pero dentro de un archivo CSS, el URI base es relativo al uri CSS, no al HTML que lo contiene , pero el IE más antiguo lo hizo relativo al HTML). En otros protocolos y lenguajes, puede ser diferente (en XSLT, depende del elemento actual, por ejemplo). Vea también<html:base>
.http
! Depende del protocolo del contexto de la página. Si el contexto se cargó bajohttp://a/b/c/d;p?q
, entonces de//g
hecho se resuelve enhttp://g
. Pero si la página se cargó comohttp://a/b/c/d;p?q
, el resultado seráhttps://g
. Y tampoco te olvides de otros protocolos comofile://
(la página se carga desde el disco), lo que definitivamente te dará muchos dolores de cabeza.Estas son URL relativas al protocolo. Señalan una dirección, manteniendo el protocolo actual.
Esta notación se utiliza a menudo para evitar el problema de "contenido mixto" (un mensaje de advertencia IE quejándose
http
yhttps
recursos en la misma página HTTPS).Actualización: documentación oficial en RFC 3986:
fuente
Son URL independientes del protocolo. Si la página web se sirve en https, la solicitud usa https, si es http, entonces http.
Paul Irish parece haberlos popularizado al incluirlo en su código repetitivo.
fuente
Tenga en cuenta que no solo es independiente de http o https , sino también de archivos , ftp , etc.
Significa que si abre el archivo .htm directamente en su navegador en localhost, el navegador se resolverá // como protocolo de archivo y su página no funcionará. Puede causar problemas en sitios web empaquetados como aplicaciones "nativas" que utilizan herramientas como Electron, PhoneGap, etc.
Ejemplo:
a
fuente