Entenda os termos "mesmo site" e "mesma origem"
Os termos "mesmo site" (same-site) e "mesma origem" (same-origin) são citados com frequência, mas muitas vezes mal interpretados. Por exemplo, eles são mencionados no contexto de transições de página, solicitações de fetch(), cookies, abertura de pop-ups, recursos incorporados e iframes.
Origem #
A "origem" é a combinação de um esquema (também conhecido como protocolo, por exemplo, HTTP ou HTTPS), um nome de host e uma porta (se especificada). Por exemplo, no URL https://www.example.com:443/foo, a "origem" é https://www.example.com:443.
"mesma origem" e "origem cruzada" #
Os sites que possuem a mesma combinação de esquema, nome de host e porta são considerados de "mesma origem". Todos os outros são considerados de "origem cruzada" (cross-origin).
Site #
Os domínios de nível superior (TLDs), como .com e .org, estão listados em Root Zone Database. No exemplo acima, "site" é a combinação do TLD e da parte do domínio que o precede. Por exemplo, no URL https://www.example.com:443/foo, o "site" é example.com.
No entanto, para domínios como .co.jp ou .github.io, usar apenas o TLD de .jp ou .io não é detalhado o suficiente para identificar o "site". Além disso, não há como determinar algoritmicamente o nível de domínios registráveis para um determinado TLD. É por isso que uma lista de "TLDs efetivos" (eTLDs) foi criada. Eles são definidos na Public Suffix List (Lista Pública de Sufixos). A lista de eTLDs está disponível em publicsuffix.org/list.
O nome completo do site é o eTLD+1. Por exemplo, no URL https://my-project.github.io, o eTLD é .github.io e o eTLD+1 é my-project.github.io, que é considerado um "site". Em outras palavras, o eTLD+1 é o TLD efetivo e a parte do domínio que o precede.
"mesmo site" e "vários sites" #
Os sites com o mesmo eTLD+1 são considerados o "mesmo site", enquanto aqueles com eTLD+1 diferentes são "vários sites" (cross-site).
"schemeful same-site" #
A definição de "mesmo site" está evoluindo ao considerar o esquema de URL como parte do site, a fim de evitar que o HTTP seja usado como um canal fraco. À medida que os navegadores mudam para essa interpretação, talvez você veja referências a "scheme-less same-site", relacionadas à definição mais antiga, e "schemeful same-site", relacionadas à definição mais estrita. Nesse caso, http://www.example.com e https://www.example.com são considerados vários sites porque os esquemas não correspondem.
Como verificar se uma solicitação é de "mesmo site", "mesma origem" ou "vários sites" #
O Chrome envia solicitações junto com um cabeçalho HTTP Sec-Fetch-Site. Nenhum outro navegador é compatível com Sec-Fetch-Site desde abril de 2020. Isso faz parte de uma proposta mais ampla de Cabeçalhos de Solicitação de Metadados Fetch (Fetch Metadata Request Headers). O cabeçalho terá um dos seguintes valores:
cross-sitesame-sitesame-originnone
Ao examinar o valor de Sec-Fetch-Site, é possível determinar se a solicitação é de "mesmo site", "mesma origem" ou "vários sites" ("schemeful-same-site" não é capturado em Sec-Fetch-Site).