Los términos "mismo sitio" y "mismo origen" se citan con frecuencia, pero a menudo se malinterpretan. Por ejemplo, se usan en el contexto de las transiciones de páginas, las solicitudes fetch()
, las cookies, la apertura de ventanas emergentes, los recursos incorporados y los iframes. En esta página, se explica qué son y en qué se diferencian entre sí.
Origen

"Origen" es una combinación de un esquema (también conocido como protocolo, por ejemplo, HTTP o HTTPS), un nombre de host y un puerto (si se especifica). Por ejemplo, con una URL https://www.example.com:443/foo
, el "origen" es https://www.example.com:443
.
"Del mismo origen" y "de origen diferente"
Los sitios web que tienen la misma combinación de esquema, nombre de host y puerto se consideran "del mismo origen". Todo lo demás se considera "multiorigen".
Origen A | Origen B | ¿Es de "mismo origen" o "origen cruzado"? |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | Origen cruzado: diferentes dominios |
https://example.com:443 | Origen cruzado: subdominios diferentes | |
https://login.example.com:443 | Origen cruzado: subdominios diferentes | |
http://www.example.com:443 | Origen cruzado: esquemas diferentes | |
https://www.example.com:80 | Origen cruzado: puertos diferentes | |
https://www.example.com:443 | Mismo origen: concordancia exacta | |
https://www.example.com | Mismo origen: El número de puerto implícito (443) coincide |
Sitio

Los dominios de nivel superior (TLD), como .com
y .org
, se enumeran en la base de datos de la zona raíz. En el ejemplo
anterior, "sitio" es una combinación del
esquema,
el TLD y la parte del
dominio justo antes de él (lo llamamos TLD+1). Por ejemplo, con una URL https://www.example.com:443/foo
, el "sitio" es https://example.com
.
Lista de sufijos públicos y eTLD
En el caso de los dominios con elementos como .co.jp
o .github.io
, usar solo .jp
o .io
no es lo suficientemente específico como para identificar el "sitio". No hay forma de determinar de forma algorítmica el nivel de dominios registrables para un TLD en particular.
Para ayudar con eso, la Lista de sufijos públicos define una lista de sufijos públicos, también llamados TLD efectivos (eTLD). La lista de eTLD se mantiene en publicsuffix.org/list.
Para identificar la parte "sitio" de un dominio que incluye un TLD extendido, aplica la misma práctica que en el ejemplo con .com
. Tomando https://www.project.github.io:443/foo
como ejemplo, el esquema es https
, el eTLD es .github.io
y el eTLD+1 es project.github.io
, por lo que https://project.github.io
se considera el "sitio" para esta URL.

"del mismo sitio" y "entre sitios"
Los sitios web que tienen el mismo esquema y el mismo eTLD+1 se consideran "del mismo sitio". Los sitios web que tienen un esquema o un eTLD+1 diferentes son "multisitios".
Origen A | Origen B | ¿Es "del mismo sitio" o "en varios sitios"? |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | Entre sitios: diferentes dominios |
https://login.example.com:443 | Mismo sitio: Los diferentes subdominios no importan. | |
http://www.example.com:443 | Entre sitios: diferentes esquemas | |
https://www.example.com:80 | En el mismo sitio: No importa que los puertos sean diferentes. | |
https://www.example.com:443 | Mismo sitio: concordancia exacta | |
https://www.example.com | En el mismo sitio: los puertos no importan |
"Sin esquema del mismo sitio"

La definición de "mismo sitio" cambió para incluir el esquema de URL como parte del sitio para evitar que se use HTTP como un canal débil.
El concepto anterior de "mismo sitio" sin comparación de esquemas ahora se denomina "mismo sitio sin esquema". Por ejemplo, http://www.example.com
y https://www.example.com
se consideran del mismo sitio sin esquema, pero no del mismo sitio, ya que solo importa la parte del eTLD+1 y no se considera el esquema.
Origen A | Origen B | ¿Es "sin esquema del mismo sitio" o "entre sitios"? |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | Entre sitios: diferentes dominios |
https://login.example.com:443 | Sin esquema de mismo sitio: Los diferentes subdominios no importan | |
http://www.example.com:443 | Sin esquema de Same-Site: Los diferentes esquemas no importan | |
https://www.example.com:80 | Sin esquema del mismo sitio: No importa que los puertos sean diferentes. | |
https://www.example.com:443 | Sin esquema del mismo sitio: concordancia exacta | |
https://www.example.com | Sin esquema del mismo sitio: los puertos no importan |
Cómo verificar si una solicitud es "del mismo sitio", "del mismo origen" o "entre sitios"
Todos los navegadores modernos envían solicitudes con un encabezado HTTP Sec-Fetch-Site
.
El encabezado tiene uno de los siguientes valores:
cross-site
same-site
(se refiere a la misma ubicación con esquema)same-origin
none
Puedes examinar el valor de Sec-Fetch-Site
para determinar si la solicitud es del mismo sitio, del mismo origen o entre sitios.
Puedes confiar razonablemente en el valor del encabezado Sec-Fetch-Site
porque:
- JavaScript no puede modificar los encabezados HTTP que comienzan con
Sec-
- El navegador siempre establece estos encabezados.