URL sin "http | https"

89

Acabo de enterarme por un colega que omitir la parte "http | https" de una URL en un enlace hará que esa URL use cualquier esquema que utilice la página en la que se encuentra.

Entonces, por ejemplo, si se accede a mi página en http://www.example.com y tengo un enlace (observe el '//' en el frente):

<a href="https://www.google.com">Google</a>

Ese enlace irá a http://www.google.com .

Pero si accedo a la página https://www.example.com con el mismo enlace, irá a https://www.google.com

Quería buscar en línea más información sobre esto, pero tengo problemas para pensar en una buena frase de búsqueda. Si busco "URL sin HTTP", las páginas devueltas son sobre URL con este formulario: "www.example.com", que no es lo que estoy buscando.

¿Llamarías a eso una URL sin esquema? ¿Una URL sin protocolo?

¿Funciona esto en todos los navegadores? Lo probé en FF e IE 8 y funcionó en ambos. ¿Es esto parte de un estándar o debería probar más navegadores?

topher-j
fuente
1
Como referencia (ya que preguntaste qué términos buscar), la búsqueda de Google que me llevó a la pregunta original de StackOverflow fue: "URL absoluta sin protocolo"
David
no está especificando si es un http o https, por lo que el navegador decide por usted tomando la última página asumiendo que el enlace proviene de la misma página.
raym0nd
Gracias David, el enlace al duplicado respondió a todas mis preguntas
topher-j
1
@David: Para ser exactos, no lo llamaría una URL absoluta si no tiene un protocolo; es más bien una URL relativa.
Gumbo

Respuestas:

15

Se llama referencia de ruta de red (la parte que falta se llama schemeo protocol) definida en RFC3986 Sección 4.2

4.2 Referencia relativa

Una referencia relativa aprovecha la sintaxis jerárquica (Sección 1.2.3) para expresar una referencia de URI relativa al espacio de nombres de otro URI jerárquico.

  relative-ref  = relative-part [ "?" query ] [ "#" fragment ]

  relative-part = "//" authority path-abempty
                / path-absolute
                / path-noscheme
                / path-empty

El URI referido por una referencia relativa, también conocido como el URI de destino, se obtiene aplicando el algoritmo de resolución de referencia de la Sección 5.

Una referencia relativa que comienza con dos caracteres de barra se denomina referencia de ruta de red (el énfasis es mío); estas referencias rara vez se utilizan. Una referencia relativa que comienza con un solo carácter de barra se denomina referencia de ruta absoluta. Una referencia relativa que no comienza con un carácter de barra se denomina referencia de ruta relativa.

Un segmento de ruta que contiene un carácter de dos puntos (por ejemplo, "esto: eso") no se puede usar como el primer segmento de una referencia de ruta relativa, ya que se confundiría con un nombre de esquema. Dicho segmento debe estar precedido por un segmento de puntos (por ejemplo, "./this:that") para hacer una referencia de ruta relativa.

Matas Vaitkevicius
fuente
// no se puede usar en la etiqueta base en html. Configuré <base href = "// abc.com/" y una URL de imagen relativa <img src = "/ img / logo.jpg>. Sin embargo, abierto en el navegador, el enlace de la imagen se convertirá en file: /// abc. com / img / logo.jpg. ¿Alguna solución?
Scott Chu