Термины «тот же сайт» и «то же происхождение» часто упоминаются, но часто неправильно понимаются. Например, они упоминаются в контексте переходов страниц, запросов fetch()
, файлов cookie, открытия всплывающих окон, встроенных ресурсов и iframe.
Источник
«Происхождение» — это комбинация схемы (также известной как протокол , например HTTP или HTTPS ), имени хоста и порта (если он указан). Например, для URL-адреса https://www.example.com:443/foo
«происхождение» — https://www.example.com:443
.
«того же происхождения» и «перекрестного происхождения»
Веб-сайты, которые имеют одну и ту же схему, имя хоста и порт, считаются «одного происхождения». Все остальное считается «перекрестным происхождением».
Происхождение А | Происхождение Б | Объяснение того, являются ли источники A и B «одного происхождения» или «перекрестного происхождения». |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | перекрестное происхождение: разные домены |
https://example.com:443 | перекрестное происхождение: разные поддомены | |
https: //логин.example.com :443 | перекрестное происхождение: разные поддомены | |
http://www.example.com:443 | перекрестное происхождение: разные схемы | |
https://www.example.com: 80 | перекрестное происхождение: разные порты | |
https://www.example.com:443 | того же происхождения: точное совпадение | |
https://www.example.com | того же происхождения: неявный номер порта (443) совпадает |
Сайт
Домены верхнего уровня (TLD), такие как .com
и .org
, перечислены в базе данных корневых зон . В приведенном выше примере «сайт» — это комбинация схемы , TLD и части домена непосредственно перед ним (мы называем его TLD+1). Например, для URL-адреса https://www.example.com:443/foo
«сайт» — https://example.com
.
Список общедоступных суффиксов и eTLD
Для доменов, которые включают такие вещи, как .co.jp
или .github.io
, простое использование .jp
или .io
недостаточно для идентификации «сайта». Невозможно алгоритмически определить уровень регистрируемых доменов для конкретного TLD. Вот почему был создан список общедоступных суффиксов, определенный в списке общедоступных суффиксов . Эти общедоступные суффиксы также называются эффективными TLD (eTLD) . Список eTLD хранится по адресу publicsuffix.org/list .
Чтобы определить «сайт»-часть домена, включающего eTLD, примените тот же метод, что и в примере с .com
. Если взять https://www.project.github.io:443/foo
в качестве примера, схема — https
, eTLD — .github.io
, а eTLD+1 — project.github.io
, поэтому https://project.github.io
считается «сайтом» для этого URL.
«один и тот же сайт» и «межсайтовый»
Веб-сайты, имеющие одинаковую схему и одинаковый eTLD+1, считаются «одним и тем же сайтом». Веб-сайты, имеющие другую схему или другой eTLD+1, являются «межсайтовыми».
Происхождение А | Происхождение Б | Объяснение того, являются ли источники A и B «одными и межсайтовыми» |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | межсайтовый: разные домены |
https: //логин.example.com :443 | один и тот же сайт: разные поддомены не имеют значения | |
http://www.example.com:443 | межсайтовый: разные схемы | |
https://www.example.com: 80 | тот же сайт: разные порты не имеют значения | |
https://www.example.com:443 | тот же сайт: точное совпадение | |
https://www.example.com | тот же сайт: порты не имеют значения |
"бесхитростный один и тот же сайт"
Определение «тот же сайт» эволюционировало, чтобы рассматривать схему URL как часть сайта, чтобы предотвратить использование HTTP в качестве слабого канала . Старая концепция «одного и того же сайта» без сравнения схем теперь называется «бессхемным одним и тем же сайтом». Например, http://www.example.com
и https://www.example.com
считаются бессхемными для одного и того же сайта, но не для одного и того же сайта, поскольку имеет значение только часть eTLD+1, а схема не принимается во внимание. .
Происхождение А | Происхождение Б | Объяснение того, являются ли источники A и B «бессхемными, расположенными на одном сайте» |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | межсайтовый: разные домены |
https: //логин.example.com :443 | бесхитростный один и тот же сайт: разные поддомены не имеют значения | |
http://www.example.com:443 | бессхемное одно и то же место: разные схемы не имеют значения | |
https://www.example.com: 80 | бессхемный один и тот же сайт: разные порты не имеют значения | |
https://www.example.com:443 | бесхитростный тот же сайт: точное совпадение | |
https://www.example.com | бесхитростный односайтовый сайт: порты не имеют значения |
Как проверить, является ли запрос «одним и тем же сайтом», «одним и тем же источником» или «межсайтовым»
Все современные браузеры ( скоро появится поддержка Safari) отправляют запросы вместе с HTTP-заголовком Sec-Fetch-Site
. Заголовок имеет одно из следующих значений:
-
cross-site
-
same-site
-
same-origin
-
none
Изучив значение Sec-Fetch-Site
, вы можете определить, является ли запрос «того же сайта», «того же происхождения» или «межсайтовым».