"Mesmo site" e "mesma origem"

"Mesmo site" e "mesma origem" são termos citados com frequência, mas frequentemente mal interpretados. Por exemplo, eles são usados no contexto de transições de páginas, solicitações fetch(), cookies, pop-ups de abertura, recursos incorporados e iframes. Esta página explica o que são e como eles são diferentes entre si.

Origem
A estrutura de uma origem.

"Origin" é uma combinação de um esquema (também conhecido como protocolo, como HTTP ou HTTPS), um nome de host e uma porta (se especificada). Por exemplo, considerando um URL https://www.example.com:443/foo, a "origem" é https://www.example.com:443.

"Mesma origem" e "origem cruzada"

Sites que têm a mesma combinação de esquema, nome do host e porta são considerados de "mesma origem". Todo o restante é considerado de "origem cruzada".

Origem A Origem B "Mesma origem" ou "origem cruzada"?
https://www.example.com:443 https://www.evil.com:443 Origem cruzada: domínios diferentes
https://example.com:443 Origem cruzada: subdomínios diferentes
https://login.exemplo.com:443 Origem cruzada: subdomínios diferentes
http://www.exemplo.com:443 Origem cruzada: esquemas diferentes
https://www.example.com:80 Origem cruzada: portas diferentes
https://www.exemplo.com:443 Mesma origem: correspondência exata
https://www.example.com Mesma origem: número de porta implícito (443) correspondente

Site

Site (TLD+1)
As partes de um URL que compõem um site.

Domínios de nível superior (TLDs), como .com e .org, estão listados no banco de dados de zonas raiz. No exemplo
anterior, "site" é uma combinação do esquema, do TLD e da parte do domínio logo antes dele (chamado de TLD+1). Por exemplo, considerando um URL de https://www.example.com:443/foo, o "site" é https://example.com.

Lista de sufixos públicos e eTLD

Para domínios com elementos como .co.jp ou .github.io, usar apenas .jp ou .io não é específico o suficiente para identificar o "site". Não há como determinar, algoritmicamente, o nível de domínios registráveis de um TLD específico. Para ajudar com isso, a lista de sufixos públicos define uma lista de sufixos públicos, também chamados de TLDs efetivos (eTLDs). A lista de eTLDs é mantida em publicsuffix.org/list.

Para identificar a parte do "site" de um domínio que inclui um eTLD, aplique a mesma prática do exemplo com .com. Considerando https://www.project.github.io:443/foo como exemplo, o esquema é https, o eTLD é .github.io e o eTLD+1 é project.github.io. Portanto, https://project.github.io é considerado o "site" para esse URL.

Site (eTLD+1)
As partes de um URL com um eTLD

"mesmo site" e "entre sites"

Sites que têm o mesmo esquema e o mesmo eTLD+1 são considerados do "mesmo site". Sites que têm um esquema diferente ou um eTLD+1 diferente são "entre sites".

Origem A Origem B "Mesmo site" ou "entre sites"?
https://www.example.com:443 https://www.evil.com:443 Entre sites: domínios diferentes
https://login.exemplo.com:443 Mesmo site: subdomínios diferentes não importam
http://www.exemplo.com:443 Entre sites: esquemas diferentes
https://www.example.com:80 Mesmo site: portas diferentes não importam
https://www.exemplo.com:443 Mesmo site: correspondência exata
https://www.example.com Mesmo site: as portas são irrelevantes

"Mesmo site sem esquema"

site sem esquema

A definição de "mesmo site" mudou para incluir o esquema de URL como parte do site, a fim de evitar que o HTTP seja usado como um canal fraco. O conceito mais antigo de "mesmo site" sem comparação de esquemas agora é chamado de "mesmo site sem esquema". Por exemplo, http://www.example.com e https://www.example.com são considerados sem esquema no mesmo site, mas não no mesmo site, porque somente a parte eTLD+1 é importante, e o esquema não é considerado.

Origem A Origem B "Sem esquema no mesmo site" ou "entre sites"?
https://www.example.com:443 https://www.evil.com:443 Entre sites: domínios diferentes
https://login.exemplo.com:443 Mesmo site sem esquemas: subdomínios diferentes não importam
http://www.exemplo.com:443 Mesmo site sem esquemas: esquemas diferentes não importam
https://www.example.com:80 Mesmo site sem esquema: portas diferentes não importam
https://www.exemplo.com:443 Mesmo site sem esquemas: correspondência exata
https://www.example.com Mesmo site sem esquema: as portas não importam

Como verificar se uma solicitação é do "mesmo site", da "mesma origem" ou "entre sites"

Compatibilidade com navegadores

  • 76
  • 79
  • 90
  • 16.4

Origem

Todos os navegadores modernos enviam solicitações com um cabeçalho HTTP Sec-Fetch-Site. O cabeçalho tem um dos seguintes valores:

  • cross-site
  • same-site (refere-se ao mesmo site com esquema)
  • same-origin
  • none

Você pode examinar o valor de Sec-Fetch-Site para determinar se a solicitação é do mesmo site, da mesma origem ou entre sites.

É possível confiar razoavelmente no valor do cabeçalho Sec-Fetch-Site, porque: