Skip to content
Aprender Medir Blog Case studies About
En esta página
  • Origin
    • "same-origin" y "cross-origin"
  • Sitio
    • "same-site" y "cross-site"
    • "schemeful same-site"
  • Cómo comprobar si una solicitud es "same-site", "same-origin" o "cross-site"

Entendiendo "same-site" y "same-origin"

Apr 15, 2020 — Actualizado Jun 10, 2020
Available in: 日本語, 한국어, Português, Русский, 中文, English
Appears in: Seguro y protegido
Eiji Kitamura
Eiji Kitamura
TwitterGitHubHomepage
En esta página
  • Origin
    • "same-origin" y "cross-origin"
  • Sitio
    • "same-site" y "cross-site"
    • "schemeful same-site"
  • Cómo comprobar si una solicitud es "same-site", "same-origin" o "cross-site"

"same-site" y "same-origen" se citan con frecuencia, pero a menudo son términos que se malinterpretan. Por ejemplo, se mencionan en el contexto de transiciones de página, consultas fetch(), cookies, ventanas emergentes, recursos integrados y en iframes.

Origin #

Origin

"Origin (Origen)" es una combinación de un esquema (también conocido como protocolo, por ejemplo HTTP o HTTPS), nombre de host y puerto (si se especifica). Por ejemplo, dada una URL de https://www.example.com:443/foo, el "origen" es https://www.example.com:443.

"same-origin" y "cross-origin" #

Los sitios web que tienen la combinación del mismo esquema, nombre de host y puerto se consideran "same-origin (mismo origen)". Todo lo demás se considera "cross-origin (origen cruzado)".

Origen AOrigen BExplicación de si el Origen A y B son "same-origin" o "cross-origin"
https://www.example.com:443https: // www.evil.com:443origen cruzado: diferentes dominios
https://example.com:443origen cruzado: diferentes subdominios
https://login.example.com:443origen cruzado: diferentes subdominios
http://www.example.com:443origen cruzado: diferentes esquemas
https://www.example.com:80origen cruzado: diferentes puertos
https://www.example.com:443mismo origen: coincidencia exacta
https://www.example.commismo origen: coincidencias de número de puerto implícito (443)

Sitio #

Sitio

Los dominios de nivel superior (TLD) como .com y .org se enumeran en la Root Zone Database. En el ejemplo anterior, "sitio" es la combinación del TLD y la parte del dominio inmediatamente anterior. Por ejemplo, dada una URL de https://www.example.com:443/foo, el "sitio" es example.com.

Sin embargo, para dominios como .co.jp o .github.io , el simple hecho de usar el TLD de .jp o .io no es lo suficientemente detallado para identificar el "sitio". Y no hay forma de determinar algorítmicamente el nivel de dominios registrables para un TLD en particular. Es por eso que se creó una lista de "TLD efectivos" (eTLD). Estos se definen en la Public Suffix List (lista de sufijos públicos). La lista de eTLD es mantenida en publicsuffix.org/list.

El nombre completo del sitio se conoce como eTLD+1. Por ejemplo, dada una URL de https://my-project.github.io, el eTLD es .github.io y el eTLD+1 es my-project.github.io, que se considera un "sitio". En otras palabras, el eTLD+1 es el TLD efectivo y la parte del dominio inmediatamente anterior.

eTLD+1

"same-site" y "cross-site" #

Los sitios web que tienen el mismo eTLD+1 se consideran "same-site (mismo sitio)". Los sitios web que tienen un eTLD+1 diferente son "cross-site (sitio cruzado)".

Origen AOrigen BExplicación de si Origin A y B son "en el mismo sitio" o "entre sitios"
https://www.example.com:443https://www.evil.com:443sitio cruzado: diferentes dominios
https://login.example.com:443mismo sitio: los diferentes subdominios no importan
http://www.example.com:443mismo sitio: diferentes esquemas no importan
https://www.example.com:80mismo sitio: los diferentes puertos no importan
https://www.example.com:443mismo sitio: coincidencia exacta
https://www.example.commismo sitio: los puertos no importan

"schemeful same-site" #

schemeful same-site

La definición de "same-site" está evolucionando para considerar el esquema de URL como parte del sitio para evitar que HTTP se utilice como un canal débil. A medida que los navegadores adopten esta interpretación, es posible que veas referencias a "scheme-less same-site (mismo sitio sin esquema)" cuando se refiera a la definición anterior y "schemeful same-site (mismo sitio esquemático)" refiriéndose a la definición más estricta. En ese caso, http://www.example.com y https://www.example.com se consideran cross-site porque los esquemas no coinciden.

Origen AOrigen BExplicación de si el origen A y B son "un mismo sitio intrépido"
https://www.example.com:443https://www.evil.com:443cross-site: diferentes dominios
https://login.example.com:443mismo sitio esquemático: los diferentes subdominios no importan
http://www.example.com:443sitio cruzado: diferentes esquemas
https://www.example.com:80mismo sitio esquemático: diferentes puertos no importan
https://www.example.com:443mismo sitio esquemático: coincidencia exacta
https://www.example.commismo sitio esquemático: los puertos no importan

Cómo comprobar si una solicitud es "same-site", "same-origin" o "cross-site" #

Chrome envía solicitudes junto con una cabecera HTTP de Sec-Fetch-Site. Ningún otro navegador es compatible con Sec-Fetch-Site partir de abril de 2020. Esto es parte de una propuesta más grande de Fetch Metadata Request Headers. La cabecera tendrá uno de los siguientes valores:

  • cross-site
  • same-site
  • same-origin
  • none

Al examinar el valor de Sec-Fetch-Site, puedes determinar si la solicitud es "same-site", "same-origin" o "cross-site" (el "schemeful-same-site" no se captura en Sec-Fetch-Site).

Seguridad
Última actualización: Jun 10, 2020 — Mejorar el artículo
Return to all articles
Compartir
suscribir

Contribute

  • Presentar un error
  • Ver fuente

Contenido relevante

  • developer.chrome.com
  • Chrome Actualizaciones
  • Web Fundamentals
  • Case studies
  • Podcasts
  • Shows

Conectar

  • Twitter
  • YouTube
  • Google Developers
  • Chrome
  • Firebase
  • Google Cloud Platform
  • Todos los productos
  • Condiciones y privacidad
  • Principios de la Comunidad

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies.