„Ta sama witryna” i „ta sama witryna”

Terminy „ta sama witryna” i „ta sama witryna” są często przywoływane, ale często są niewłaściwie rozumiane. Są używane np. w kontekście przechodzenia między stronami, żądań fetch(), plików cookie, otwierania wyskakujących okienek, umieszczonych zasobów i elementów iframe. Z tej strony dowiesz się, czym są i czym różnią się od siebie.

Punkt początkowy
Struktura źródła.

„Źródło” to kombinacja schematu (nazywanego też protokołem, np. HTTP lub HTTPS), nazwą hosta i portem (jeśli został określony). Na przykład w przypadku adresu URL https://www.example.com:443/foo wartością „origin” jest https://www.example.com:443.

„Same-origin” i „cross-origin”.

Witryny o tej samej kombinacji schematu, nazwy hosta i portu są uznawane za witryny o tej samej domenie pochodzenia. Wszystkie inne są uznawane za „między domenami”.

Punkt początkowy A Punkt początkowy B „Same-origin” czy „cross-origin”?
https://www.example.com:443 https://www.evil.com:443 Różne domeny: różne domeny
https://example.com:443 Różne domeny: różne subdomeny
https://logowanie.example.com:443 Różne domeny: różne subdomeny
http://www.example.com:443 Różne domeny: różne schematy
https://www.example.com:80 Różne domeny: różne porty
https://www.example.com:443 Ta sama pochodzenie: dopasowanie ścisłe
https://www.example.com Same-origin: niejawny numer portu (443)

Witryna

Witryna (TLD+1)
Części adresu URL tworzące witrynę.

Domeny najwyższego poziomu (TLD), takie jak .com i .org, są wymienione w bazie danych strefy głównej. W poprzednim
przykładzie „witryna” jest kombinacją schematu, domeny TLD i części występującej tuż przed nią (nazywamy ją TLD + 1). Na przykład w przypadku adresu URL https://www.example.com:443/foo „witryna” to https://example.com.

Lista domen publicznych i eTLD

W przypadku domen z elementami takimi jak .co.jp czy .github.io samo użycie właściwości .jp lub .io nie wystarczy, aby zidentyfikować „witrynę”. Nie można algorytmicznie określić poziomu domen, które można zarejestrować w przypadku danej domeny najwyższego poziomu. Aby ułatwić Ci to zadanie, lista domen publicznych tworzy listę domen publicznych, nazywanych też efektywnymi domenami najwyższego poziomu (eTLD). Lista domen eTLD znajduje się na stronie publicsuffix.org/list.

Aby zidentyfikować część „witryna” domeny, która zawiera eTLD, zastosuj tę samą procedurę co w przykładzie z operatorem .com. Jeśli chodzi o przykład, schemat https://www.project.github.io:443/foo to https, eTLD to .github.io, a eTLD+1 to project.github.io, więc https://project.github.io jest uważany za „witrynę” w przypadku tego adresu URL.

Witryna (eTLD+1)
Części adresu URL z rozszerzeniem eTLD.

„ta sama witryna” i „inna witryna”

Witryny o tym samym schemacie i takim samym poziomie eTLD + 1 są uznawane za „tę samą witrynę”. Witryny o innym schemacie lub o odmiennej domenie eTLD + 1 są uznawane za „między witrynami”.

Punkt początkowy A Punkt początkowy B „W tej samej witrynie” czy „w innej witrynie”?
https://www.example.com:443 https://www.evil.com:443 W wielu witrynach: różne domeny
https://logowanie.example.com:443 Ta sama witryna: różne subdomeny nie mają znaczenia
http://www.example.com:443 W innych witrynach: różne schematy
https://www.example.com:80 Ta sama witryna: różne porty nie mają znaczenia
https://www.example.com:443 Ta sama witryna: dopasowanie ścisłe
https://www.example.com Ta sama witryna: porty nie mają znaczenia

„Bez schematu”

bez schematów w tej samej witrynie

Definicja „tej samej witryny” została zmieniona tak, aby uwzględnić schemat adresu URL jako część witryny, aby zapobiec wykorzystaniu protokołu HTTP jako słabego kanału. Starsza koncepcja „tej samej witryny” bez porównania schematów nosi teraz nazwę „bezschematowa liczba stron w tej samej witrynie”. Na przykład http://www.example.com i https://www.example.com są uznawane za bez schematu w tej samej witrynie, ale nie w tej samej witrynie, ponieważ znaczenie ma tylko część eTLD + 1, a schemat nie jest brany pod uwagę.

Punkt początkowy A Punkt początkowy B „Bez schematu w tej samej witrynie” czy „w innej witrynie”?
https://www.example.com:443 https://www.evil.com:443 W wielu witrynach: różne domeny
https://logowanie.example.com:443 Bez schematów w tej samej witrynie: różne subdomeny nie mają znaczenia
http://www.example.com:443 Bez schematów w tej samej witrynie: różne schematy nie mają znaczenia
https://www.example.com:80 Bez schematów w tej samej witrynie: różne porty nie mają znaczenia
https://www.example.com:443 Bez schematów w tej samej witrynie: dopasowanie ścisłe
https://www.example.com Bez schematów w samej witrynie: porty nie mają znaczenia

Jak sprawdzić, czy żądanie jest typu „ta sama witryna”, „ta sama witryna” czy „inna witryna”

Obsługa przeglądarek

  • 76
  • 79
  • 90
  • 16.4

Źródło

Wszystkie nowoczesne przeglądarki wysyłają żądania za pomocą nagłówka HTTP Sec-Fetch-Site. Nagłówek ma jedną z tych wartości:

  • cross-site
  • same-site (odnosi się do schematu w tej samej witrynie)
  • same-origin
  • none

Możesz sprawdzić wartość Sec-Fetch-Site, aby określić, czy żądanie pochodzi z tej samej witryny, z tej samej domeny czy z innej witryny.

Wartości nagłówka Sec-Fetch-Site można bez obaw ufać, ponieważ: