Określenie „ta sama witryna” i „ta sama witryna”

Hasła „ta sama-witryna” i „ta sama strona” są często przywoływane, ale często są niewłaściwie rozumiane. Wspomniane są na przykład w kontekście przechodzenia między stronami, żądań fetch(), plików cookie, otwierania wyskakujących okienek, umieszczonych zasobów i elementów iframe.

Punkt początkowy

Punkt początkowy

„Ź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, które korzystają z tego samego schematu, nazwy hosta i portu, są uważane za witryny o tej samej domenie. Wszystkie inne są uznawane za „między domenami”.

Punkt początkowy A Punkt początkowy B Wyjaśnienie, czy źródło A i B są „z tej samej domeny” czy „z innej domeny”
https://www.example.com:443 https://www.evil.com:443 cross-origin: różne domeny
https://example.com:443 cross-origin: różne subdomeny
https://logowanie.example.com:443 cross-origin: różne subdomeny
http://www.example.com:443 cross-origin: różne schematy
https://www.example.com:80 cross-origin: różne porty
https://www.example.com:443 same-origin: dopasowanie ścisłe
https://www.example.com same-origin: niejawny numer portu (443)

Witryna

Witryna (TLD+1)

Domeny najwyższego poziomu (TLD), takie jak .com i .org, znajdują się w bazie danych strefy głównej. W powyższym przykładzie „site” to połączenie schematu, domeny TLD i części znajdującej się tuż przed nią (nazywamy ją TLD + 1). Na przykład w przypadku adresu URL https://www.example.com:443/foo adres „witryna” to https://example.com.

Lista domen publicznych i eTLD

W przypadku domen zawierających takie elementy jak .co.jp czy .github.io samo użycie właściwości .jp lub .io nie jest wystarczająco szczegółowe, aby można było zidentyfikować „witrynę”. Nie ma sposobu, aby algorytmicznie określić poziom domen, które można zarejestrować w przypadku danej domeny najwyższego poziomu. W związku z tym utworzono listę sufiksów publicznych zdefiniowanych na liście domen publicznych. Takie domeny publiczne są też nazywane skutecznymi domenami najwyższego poziomu (eTLD). Lista domen eTLD znajduje się pod adresem 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)

„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 wyjaśnienie, czy punkty początkowe A i B są „w tej samej witrynie” czy „w innej witrynie”.
https://www.example.com:443 https://www.evil.com:443 cross-site: różne domeny
https://logowanie.example.com:443 same-site: różne subdomeny nie mają znaczenia
http://www.example.com:443 cross-site: różne schematy
https://www.example.com:80 same-site: różne porty nie mają znaczenia
https://www.example.com:443 same-site: dopasowanie ścisłe
https://www.example.com same-site: porty nie mają znaczenia

„bez schematu” w tej samej witrynie

bez schematów w tej samej witrynie

Definicja „tej samej witryny” ewoluowała, aby uwzględniać 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ą uważane 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 Wyjaśnienie, czy punkt początkowy A i B jest „bez schematu” w tej samej witrynie
https://www.example.com:443 https://www.evil.com:443 cross-site: różne domeny
https://logowanie.example.com:443 schemeless-same-site: 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 bezproblemowe działanie w tej samej witrynie: różne porty nie mają znaczenia
https://www.example.com:443 schemeless-same-site: dopasowanie ścisłe
https://www.example.com schemeless-same-site: porty nie mają znaczenia

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

Wszystkie nowoczesne przeglądarki (Safari obsługują wkrótce stronę docelową) wysyłają żądania wraz z nagłówkiem HTTP Sec-Fetch-Site. Nagłówek ma jedną z tych wartości:

  • cross-site
  • same-site
  • same-origin
  • none

Analizując wartość Sec-Fetch-Site, możesz określić, czy żądanie dotyczy tej samej witryny, tej samej domeny czy innych witryn.