Terminy „w tej samej witrynie” i „z tego samego źródła” są często przytaczane, ale często są źle rozumiane. Są one używane na przykład w kontekście przejść między stronami, fetch()
żądań, plików cookie, otwierania wyskakujących okienek, zasobów wbudowanych i ramek iframe. Na tej stronie wyjaśniamy, czym są te formaty i czym się od siebie różnią.
Punkt początkowy

„Pochodzenie” to kombinacja schematu (zwanego też protokołem, na przykład HTTP lub HTTPS), nazwy hosta i portu (jeśli jest określony). Na przykład w przypadku adresu URL https://www.example.com:443/foo
„pochodzenie” to https://www.example.com:443
.
„Same-origin” i „cross-origin”
Witryny o tej samej kombinacji schematu, nazwy hosta i portu są uznawane za pochodzące z tego samego źródła. Pozostałe wartości są uznawane za „cross-origin”.
Origin A | Źródło B | „Same-origin” czy „cross-origin”? |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | Pomiędzy domenami: różne domeny |
https://example.com:443 | Pomiędzy domenami: różne subdomeny | |
https://login.example.com:443 | Pomiędzy domenami: różne subdomeny | |
http://www.example.com:443 | Pomiędzy domenami: różne schematy | |
https://www.example.com:80 | Pomiędzy domenami: różne porty | |
https://www.example.com:443 | Same-origin: dopasowanie ścisłe | |
https://www.example.com | Tego samego pochodzenia: dopasowania numeru portu domyślnego (443) |
Witryna

Domeny najwyższego poziomu (TLD), takie jak .com
i .org
, są wymienione w bazie danych strefy głównej. W poprzednim
przykładzie „witryna” to połączenie schematu, TLD i części domeny bezpośrednio przed nim (nazywamy ją TLD+1). Na przykład, jeśli adres URL to https://www.example.com:443/foo
, „witryna” to https://example.com
.
Lista sufiksów publicznych i eTLD
W przypadku domen z elementami takimi jak .co.jp
lub .github.io
samo użycie .jp
lub .io
nie jest wystarczająco precyzyjne, aby zidentyfikować „witrynę”. Nie ma możliwości określenia na podstawie algorytmu poziomu domen rejestrowalnych w przypadku konkretnej domeny najwyższego poziomu.
Aby ułatwić Ci to zadanie, lista sufiksów publicznych definiuje listę sufiksów publicznych, zwanych też skutecznymi domenami najwyższego poziomu (eTLD). Lista eTLD jest dostępna na stronie publicsuffix.org/list.
Aby zidentyfikować część „witryna” domeny zawierającej domenę eTLD, zastosuj tę samą metodę co w przykładzie z .com
. W przypadku adresu https://www.project.github.io:443/foo
schemat to https
, domena najwyższego poziomu to .github.io
, a domena eTLD+1 to project.github.io
, więc https://project.github.io
jest uznawana za „witrynę” dla tego adresu URL.

„w tym samym witrynie” i „między witrynami”.
Strony internetowe, które mają ten sam schemat i ten sam sufiks eTLD + 1, są uznawane za „tę samą witrynę”. Witryny, które mają inny schemat lub inny sufiks eTLD+1, są „witrynami wielostronnymi”.
Origin A | Źródło B | „W tym samym witrynie” czy „W różnych witrynach”? |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | Na różnych stronach: różne domeny |
https://login.example.com:443 | W tej samej witrynie: różne subdomeny nie mają znaczenia | |
http://www.example.com:443 | W witrynach: różne schematy | |
https://www.example.com:80 | W ramach tej samej witryny: różne porty nie mają znaczenia | |
https://www.example.com:443 | Na tej samej stronie: dopasowanie ścisłe | |
https://www.example.com | W ramach tej samej witryny: porty nie mają znaczenia |
„Bez schematu w tym samym miejscu”

Definicja „tej samej witryny” została zmieniona, aby obejmować schemat adresu URL jako część witryny. Ma to zapobiec używaniu protokołu HTTP jako słabego kanału.
Starsza koncepcja „w tym samym miejscu” bez porównywania schematów nosi teraz nazwę „w tym samym miejscu bez porównywania schematów”. Na przykład http://www.example.com
i https://www.example.com
są uznawane za tę samą witrynę bez schematu, ale nie są uznawane za tę samą witrynę, ponieważ liczy się tylko część eTLD+1, a schemat nie jest brany pod uwagę.
Origin A | Źródło B | „Bez schematu na tej samej stronie” czy „między stronami”? |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | Na różnych stronach: różne domeny |
https://login.example.com:443 | Brak schematu w ramach tej samej witryny: różne subdomeny nie mają znaczenia | |
http://www.example.com:443 | Brak obsługi atrybutu same-site: różne schematy nie mają znaczenia | |
https://www.example.com:80 | Brak schematu w ramach tej samej witryny: różne porty nie mają znaczenia | |
https://www.example.com:443 | Bezschematowe adresy w tym samym miejscu: dopasowanie ścisłe | |
https://www.example.com | Brak obsługi atrybutu „same-site”: porty nie mają znaczenia |
Jak sprawdzić, czy żądanie jest „w tej samej witrynie”, „w tym samym źródle” czy „między witrynami”
Wszystkie nowoczesne przeglądarki wysyłają żądania z nagłówkiem HTTP Sec-Fetch-Site
.
Nagłówek ma jedną z tych wartości:
cross-site
same-site
(odnosi się do atrybutu „Schemeful Same-Site”)same-origin
none
Aby określić, czy żądanie pochodzi z tej samej witryny, z tej samej domeny czy z innej witryny, możesz sprawdzić wartość parametru Sec-Fetch-Site
.
Możesz ufać wartości nagłówka Sec-Fetch-Site
, ponieważ:
- Nagłówków HTTP zaczynających się od
Sec-
nie można modyfikować za pomocą JavaScriptu - Te nagłówki zawsze ustawia przeglądarka.