¿Cuáles son las partes de una URL?

La mayoría de las veces, está bien decir cosas como "Compré un dominio" o "Nuestras imágenes están alojadas en otro sitio", incluso si eso no es estrictamente cierto. Sin embargo, en algunos contextos, es necesario ser más preciso. Por ejemplo, cuando trabajas con cookies, debes comprender la diferencia entre sitio y origen.

Los nombres de las partes de la URL se especifican en un estándar, que también define una API de JavaScript:

  • El estándar de URL define las URLs y los conceptos relacionados para permitir que los ingenieros creen navegadores web interoperables.
  • El componente API de URL del estándar define métodos para proporcionar acceso a partes de una cadena de URL, como el esquema o el origen.

En este documento, se explican varios términos que se usan con las cadenas de URL de HTTP o HTTPS. No abarca otros tipos de URLs, como las URLs de archivos o de datos. En el caso de términos como host y origin, las definiciones precisas son inherentemente complejas, por lo que este documento proporciona ejemplos y vínculos al estándar de URL, en lugar de intentar explicaciones completas.

Puedes usar JavaScript para obtener los nombres de los componentes de URL que define la API de URL. Por ejemplo:

let url = new URL('https://foo.com.au:1234/bar/foo.html#bar');
console.log(url);

Analizador de URLs

Edita la siguiente URL para ver cómo se nombran las partes de la cadena de URL. También puedes abrirlo en una pestaña separada en https://chrome.dev/url-parts/.


A continuación, se enumeran alfabéticamente los nombres de las partes de la URL.

Dominio de nivel superior con código de país (ccTLD)

Es un dominio de nivel superior definido en la lista de códigos de país ISO 3166-1.

  • Para https://example.org.au, el ccTLD es au.
  • Para https://example.io, el ccTLD es io.

Nombre de dominio

Son las partes de una URL de HTTP o HTTPS separadas por puntos: todo lo que se encuentra después del esquema, pero antes de la ruta de acceso o el puerto (si se especifican). Cada parte del nombre de dominio se conoce como etiqueta.

URL Nombre de dominio
https://example.github.io/path example.github.io
https://support.example.org.au:443 support.example.org.au

Dominio de nivel superior efectivo (eTLD)

Una entrada en la Lista de sufijos públicos, que incluye un TLD y (para los eTLD con varias partes) dominios adicionales debajo de ese: de segundo nivel, de tercer nivel, etcétera.

  • Por ejemplo: com, com.au, github.io, sa.edu.au, schools.nsw.edu.au.

Un "sufijo público", como los de estos ejemplos, es un nombre con el que se pueden registrar dominios. La Lista de sufijos públicos es una lista de todos los sufijos públicos conocidos y se actualiza con frecuencia. Los navegadores, incluidos Chromium y Firefox, usan la lista en sus compilaciones.

eTLD+1

Consulta Dominio registrable.

Un eTLD más el subdominio que lo precede

  • Por ejemplo: example.com, example.org.au, example.github.io, example.sa.edu.au, example.schools.nsw.edu.au.

Nombre del archivo

No se define en el estándar de URL ni forma parte de la API de URL, pero se usa de uso frecuente para hacer referencia a la parte final de la URL que no es una ruta de acceso, según la suposición (a menudo incorrecta) de que la URL se asigna directamente a una estructura de directorios.

Por ejemplo, con https://example.com/dir/file.html, se puede hacer referencia a file.html como el nombre de archivo.

Los navegadores también usan el valor del nombre de archivo para nombrar un recurso si se descarga. Por ejemplo, https://example.com/images/image.jpg se guardaría de forma local en image.jpg.

Fragment

Es una cadena que sigue a un carácter # al final de una URL y que proporciona un identificador de fragmento.

  • Por ejemplo, la URL https://example.com/cats#tabby tiene un valor de identificador de fragmento de tabby.

La parte que incluye el # se conoce como hash o ancla. También puedes vincular y destacar un fragmento de texto.

La API de URL devuelve el hash, no el fragmento.

Nombre de dominio completamente calificado (FQDN)

Es una dirección completa para un sitio web o un servidor que se asigna a una dirección IP.

URL FQDN
https://example.com:1234/cats example.com
https://api.example.github.io api.example.github.io

El FQDN de una URL no incluye el puerto, incluso si se usa un puerto no predeterminado.

Hash (o anclaje)

Es una cadena que sigue a un carácter # al final de una URL y que proporciona un identificador de fragmento. (En algunos contextos, se denomina "ancla").

La parte que excluye el # se conoce como fragmento. También puedes vincular y destacar un fragmento de texto.

La API de URL devuelve el hash, no el fragmento.

Host

Según se define en el estándar de URL, un host puede ser un nombre de dominio, una dirección IPv4, una dirección IPv6, un host opaco o un host vacío.

  • La definición de host del estándar de URL no incluye el puerto.
  • URL.host incluye el puerto, a menos que este sea el predeterminado para el esquema.
  • URL.hostname no incluye el puerto.
URL URL.host
https://www.example.com:443/cat www.example.com
// 443 is the default port for the scheme
https://www.example.com:1234/cat www.example.com:1234
https://cat.example.github.io cat.example.github.io

Nombre de host

El nombre de host se define con la API de JavaScript URL, pero no en otro lugar con el estándar de URL. Consulta la representación del host para obtener más detalles.

URL.hostname devuelve el host sin el port.

URL URL.hostname
https://www.example.com:443/cat www.example.com
https://www.example.com:1234/cat www.example.com
https://cat.example.github.io cat.example.github.io

Origen

El estándar de URL define origin y se vincula al estándar HTML para proporcionar información de referencia.

Para las URLs HTTP o HTTPS, URL.origin devuelve el esquema, el host y el puerto (a menos que el puerto sea el predeterminado para el esquema).

URL URL.origin
https://www.example.com:443/cat https://www.example.com
https://www.example.com:1234/cat https://www.example.com:1234
https://cat.example.github.io https://cat.example.github.io

Parámetro

Consulta Parámetros de búsqueda.

Contraseña

Consulta username.

Nombre de ruta

Para una URL de HTTP o HTTPS, es la parte posterior al dominio y al puerto (si se definen), incluido un filename (si se define), pero sin incluir la cadena de búsqueda ni el hash.

URL URL.pathname
https://example.com [empty string]
https://example.com:8000/search?q=tabby /search
https://example.github.io/cat/pattern#tabby /cat/pattern
https://example.github.io/README.md /README.md

A veces, se usa "ruta de acceso" para hacer referencia al nombre de la ruta sin el nombre del archivo. Por ejemplo, para la URL https://example.com/cat/pattern/tabby.html, la "ruta de acceso" es /cat/pattern.

Puerto

Número que aparece después de un : en una URL y que identifica un puerto de red. Por ejemplo, para la URL https://example.com:1234/tabby, el número de puerto es 1234.

El número de puerto debe ser un número entero sin signo de 16 bits, es decir, un número entero entre 0 y 65535, inclusive.

Para una URL de HTTP, el puerto predeterminado es el 80; para HTTPS, el predeterminado es el 443. Una URL no necesita especificar el número de puerto, a menos que se use un puerto no predeterminado.

La API devuelve una cadena vacía si el puerto es el predeterminado para el esquema.

URL URL.port
https://example.com // empty string
https://example.com:443/foo // empty string: port is default for scheme
https://www.example.com:1234/foo 1234

Protocolo

El esquema seguido de : (por ejemplo, http: o https:)

protocol está disponible en la API de URL, pero scheme no lo está.

Consulta (o "cadena de consulta")

La parte de búsqueda de la URL, sin incluir el ? inicial.

Dominio registrable

  • Para una URL con un eTLD de una sola parte, como com o org (es decir, un eTLD que corresponde a un TLD), el dominio y el dominio de segundo nivel que lo precede: por ejemplo, example.com o example.org.
  • En el caso de una URL con un eTLD de dos partes en el que solo se permite el registro de tercer nivel (es decir, entradas en la Lista de sufijos públicos, como com.au y github.io), el dominio de nivel superior de dos partes ("sufijo público") y el nombre de dominio de tercer nivel justo antes de ese. Por ejemplo: example.org.au o example.github.io.
  • Para los eTLD con tres o más partes, el eTLD y el dominio anterior

Esquema

Es la parte de la URL (antes de ://) que define el protocolo de red (o la acción que debe realizar el agente de usuario) cuando se realiza una solicitud a una URL. Por ejemplo, una solicitud a una URL con un esquema https se debe realizar con el protocolo HTTPS. En el caso de una solicitud a una URL con un esquema como file, mailto o git que no corresponde a un protocolo de red, el comportamiento depende del usuario-agente. Por ejemplo, cuando un usuario hace clic en un vínculo mailto, la mayoría de los navegadores abren su aplicación de correo electrónico predeterminada con los valores de la URL href del vínculo.

Un signo de interrogación seguido de una serie de pares clave-valor que representan parámetros y sus valores, proporcionados después de la pathname.

URL URL.search
https://example.com/cats?pattern=tabby&mood=bonkers ?pattern=tabby&mood=bonkers
https://example.com/cats:443?pattern=tabby ?pattern=tabby

La query o "cadena de consulta" hace referencia a search sin el ? inicial.

Consulta también Parámetros de búsqueda.

Parámetros de búsqueda

Hace referencia a un elemento de datos que se pasa en una cadena de búsqueda (o "cadena de consulta").

  • Por ejemplo, para https://example.com/cats?pattern=tabby&mood=bonkers, la cadena de búsqueda tiene dos parámetros: pattern=tabby y mood=bonkers.

Dominio de segundo nivel

Es el dominio que se encuentra antes de un dominio de nivel superior.

  • En la URL https://www.example.com, el dominio de segundo nivel es example.com, un subdominio del dominio de nivel superior com.

  • En el caso de https://example.org.au, el dominio de nivel superior es au, el dominio de segundo nivel es org y el dominio de tercer nivel es example. En este ejemplo, org.au es un subdominio de au y example.org.au es un subdominio de org.au.

Sitio

El sitio se define según el estándar HTML, junto con mismo sitio, que incluye el esquema, y mismo sitio sin esquema.

El sitio no está definido en el estándar de URL ni en la API de URL de JavaScript.

En este contexto, sucede lo siguiente:

  • En el caso de una URL HTTP o HTTPS con un eTLD de una sola parte, como https://example.com, el sitio consta de scheme, el eTLD y la etiqueta anterior. Por ejemplo, para la URL https://www.example.com/cat, el sitio es https://example.com. (En esta URL, el eTLD es el mismo que el dominio de nivel superior).
  • En el caso de los eTLDs de varias partes, como co.uk, github.io o sa.edu.au, el "sitio" consta del scheme, el eTLD y la etiqueta anterior. Por ejemplo, para la URL https://cat.example.co.uk/tabby, el sitio es https://example.co.uk, y para https://www.education.sa.gov.au, el sitio es https://education.sa.gov.au.
URL Sitio (con esquema y eTLD + 1)
https://cat.example.com/tabby ("https", "example.com")
https://cat.example.co.uk/tabby ("https", "example.co.uk")

A diferencia de origin, site no incluye port.

Subdominio

Es un dominio dentro de un dominio de nivel superior.

En el caso de los sitios con dominios de nivel superior de una sola parte, como com o org, son las partes que se encuentran antes del dominio de nivel superior, cada una separada por un punto.

  • www.example.com es un subdominio de example.com.
  • support.api.example.org es un subdominio de api.example.org, que es un subdominio de example.org.

En el caso de los eTLD de dos partes en los que solo se permiten registros de tercer nivel(es decir, entradas en la lista de sufijos públicos, como co.uk y github.io), los subdominios son las partes del nombre de dominio que se encuentran antes de eso.

  • Por ejemplo, cat.example.co.uk es un subdominio de example.co.uk.

Fragmento de texto

Es un tipo de fragmento que permite vincular y destacar un rango de texto dentro de una página. Cuando un usuario sigue un vínculo con un fragmento de texto, el navegador intenta ubicar, desplazar y destacar el texto dentro de la página.

Un fragmento de texto comienza con :~:text= seguido del término de búsqueda.

Por ejemplo, para vincular la primera aparición del texto "fragmento" en esta página, usa la URL https://web.dev/articles/url-parts#:~:text=fragment.

Obtén más información sobre los fragmentos de texto.

Dominio de nivel superior (TLD)

Un nombre de dominio que aparece en la Base de datos de la zona raíz, como com o org. Algunos dominios de nivel superior son dominios de nivel superior con código de país, como uk y tv.

Cuando se describen las partes de una URL HTTP o HTTPS, el TLD es el nombre de dominio que sigue al punto final.

  • En el caso de https://example.org, el dominio de nivel superior de la URL es org.
  • En el caso de https://example.org.au, el dominio de nivel superior de la URL es au y org es un dominio de segundo nivel (aunque org también es un dominio de nivel superior). org.au es un eTLD de dos partes.

La Lista de sufijos públicos de eTLDs incluye dominios con una, dos o más partes, por lo que un TLD también puede ser un eTLD. Por ejemplo:

  • En el caso de https://example.com, el eTLD de la URL es com, que también es un TLD.

Nombre de usuario

Se puede proporcionar un nombre de usuario y una contraseña opcionales al comienzo de la URL, pero esta opción quedó obsoleta por motivos de seguridad y se ignorará en muchos casos.

Por ejemplo, con https://user123:password1@example.com, el nombre de usuario es user123. Ten en cuenta que el nombre de usuario (y la contraseña) están en texto sin formato y no están encriptados. Si el nombre de usuario contiene los símbolos : o @, deben codificarse como URL en %3A y %40, respectivamente.


Más información