„Ta sama witryna” i „ta sama witryna”

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

Punkt początkowy
Struktura punktu początkowego.

„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

Witryna (domena najwyższego poziomu + 1)
Części adresu URL, z których składa się 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.

Witryna (eTLD+1)
Elementy adresu URL z eTLD.

„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”

Same-Site bez atrybutu scheme

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.comhttps://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”

Browser Support

  • Chrome: 76.
  • Edge: 79.
  • Firefox: 90.
  • Safari: 16.4.

Source

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ż: