"Stessa proprietà" e "stessa origine" sono termini spesso citati, ma spesso fraintesi. Ad esempio, vengono utilizzati nel contesto delle transizioni di pagina, delle richiestefetch()
, dei cookie, dell'apertura di popup, delle risorse incorporate e degli iframe. Questa pagina spiega cosa sono e come si differenziano tra loro.
Origine

"Origine" è una combinazione di un
schema
(noto anche come
protocollo, ad es.
HTTP o
HTTPS), un
nome host e una
porta
(se specificata). Ad esempio, dato un URL https://www.example.com:443/foo
,
la "origine" è https://www.example.com:443
.
"Origine stessa" e "Origine diversa"
I siti web che hanno la stessa combinazione di schema, nome host e porta sono considerati "della stessa origine". Tutto il resto è considerato "cross-origin".
Origine A | Origine B | "Origine stessa" o "Origine diversa"? |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | Origine diversa: domini diversi |
https://example.com:443 | Origine diversa: sottodomini diversi | |
https://login.example.com:443 | Origine diversa: sottodomini diversi | |
http://www.example.com:443 | Cross-origin: schemi diversi | |
https://www.example.com:80 | Origine diversa: porte diverse | |
https://www.example.com:443 | Origine stessa: corrispondenza esatta | |
https://www.example.com | Origine stessa: corrispondenze del numero di porta implicito (443) |
Sito

I domini di primo livello (TLD) come .com
e .org
sono elencati nel database della zona principale. Nell'esempio
precedente, "site" è una combinazione dello
schema,
del TLD e della parte del
dominio immediatamente precedente (chiamato TLD+1). Ad esempio, dato un URL dihttps://www.example.com:443/foo
, "sito" è https://example.com
.
Elenco dei suffissi pubblici ed eTLD
Per i domini con elementi come .co.jp
o .github.io
, l'utilizzo di .jp
o
.io
non è sufficientemente specifico per identificare il "sito". Non è possibile determinare in modo algoritmico il livello di domini registrabili per un determinato TLD.
Per aiutarti, l'elenco dei suffissi pubblici
definisce un elenco di suffissi pubblici, chiamati anche domini di primo livello effettivi (eTLD). L'elenco degli eTLD è disponibile all'indirizzo publicsuffix.org/list.
Per identificare la parte "sito" di un dominio che include un dominio di primo livello generico, applica la stessa procedura dell'esempio con .com
. Prendendo come esempio https://www.project.github.io:443/foo
, lo schema è https
, il dominio di primo livello effettivo è .github.io
e l'eTLD+1 è project.github.io
, quindi https://project.github.io
è considerato il "sito" per questo URL.

"stessa proprietà" e "tra proprietà"
I siti web che hanno lo stesso schema e lo stesso dominio eTLD+1 sono considerati "stessa proprietà". I siti web che hanno uno schema o un eTLD+1 diverso sono "cross-site".
Origine A | Origine B | "Stessa proprietà" o "Tra siti"? |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | Intersiti: domini diversi |
https://login.example.com:443 | Stessa proprietà: i sottodomini diversi non contano | |
http://www.example.com:443 | Cross-site: schemi diversi | |
https://www.example.com:80 | Stessa proprietà: le porte diverse non contano | |
https://www.example.com:443 | Stessa proprietà: corrispondenza esatta | |
https://www.example.com | Stessa origine: le porte non contano |
"Stessa proprietà senza schema"

La definizione di "stessa proprietà" è cambiata per includere lo schema URL come parte del sito al fine di impedire l'utilizzo di HTTP come canale debole.
Il vecchio concetto di "stessa proprietà" senza confronto dello schema ora si chiama "stessa proprietà senza schema". Ad esempio, http://www.example.com
e
https://www.example.com
sono considerati siti dello stesso proprietario senza schema, ma non siti dello stesso proprietario,
perché conta solo la parte eTLD+1 e lo schema non viene preso in considerazione.
Origine A | Origine B | "Senza schema nello stesso sito" o "tra siti"? |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | Intersiti: domini diversi |
https://login.example.com:443 | Stessa proprietà senza schema: i sottodomini diversi non contano | |
http://www.example.com:443 | Same-site senza schema: gli schemi diversi non contano | |
https://www.example.com:80 | Senza schema nello stesso sito: le porte diverse non contano | |
https://www.example.com:443 | Senza schema nello stesso sito: corrispondenza esatta | |
https://www.example.com | Same-site senza schema: le porte non contano |
Come verificare se una richiesta è "stessa origine", "stessa origine" o "tra siti"
Tutti i browser moderni inviano richieste con un'intestazione HTTP Sec-Fetch-Site
.
L'intestazione ha uno dei seguenti valori:
cross-site
same-site
(si riferisce a schemeful same-site)same-origin
none
Puoi esaminare il valore di Sec-Fetch-Site
per determinare se la richiesta appartiene allo stesso sito, alla stessa origine o a siti diversi.
Puoi ragionevolmente fare affidamento sul valore dell'intestazione Sec-Fetch-Site
, perché:
- Le intestazioni HTTP che iniziano con
Sec-
non possono essere modificate da JavaScript - Il browser imposta sempre queste intestazioni.