«Same-site» и «same-origin» — часто цитируемые, но часто неправильно понимаемые термины. Например, они используются в контексте переходов страниц, запросов fetch() , файлов cookie, открывающихся всплывающих окон, встроенных ресурсов и iframe. На этой странице объясняется, что это такое и чем они отличаются друг от друга.
Источник

«Origin» — это комбинация схемы (также известной как протокол , например HTTP или HTTPS ), имени хоста и порта (если указан). Например, если задан URL https://www.example.com:443/foo , «origin» — https://www.example.com:443 .
«Одно и то же происхождение» и «перекрестное происхождение»
Веб-сайты, имеющие одинаковую комбинацию схемы, имени хоста и порта, считаются «одного происхождения». Все остальное считается «кросс-источником».
| Происхождение А | Происхождение 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 , перечислены в базе данных корневой зоны . В предыдущем
например, "site" — это комбинация схемы , TLD и части домена непосредственно перед ней (мы называем ее TLD+1). Например, если задан URL https://www.example.com:443/foo , "site" — это https://example.com .
Список публичных суффиксов и eTLD
Для доменов с такими элементами, как .co.jp или .github.io , простое использование .jp или .io недостаточно для идентификации «сайта». Не существует алгоритмического способа определить уровень регистрируемых доменов для конкретного TLD. Чтобы помочь с этим, Public Suffix List определяет список публичных суффиксов, также называемых эффективными 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, считаются «межсайтовыми».
| Происхождение А | Происхождение 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 | На одном сайте: порты не имеют значения |
«Бессхемный тот же сайт»

Определение "same-site" изменено, чтобы включить схему URL как часть сайта, чтобы предотвратить использование HTTP в качестве слабого канала . Старая концепция "same-site" без сравнения схем теперь называется "schemeless same-site". Например, http://www.example.com и https://www.example.com считаются schemeless same-site, но не same-site, потому что имеет значение только часть eTLD+1, а схема не учитывается.
| Происхождение А | Происхождение B | «Безсхемный односайтовый» или «межсайтовый»? |
|---|---|---|
| https://www.example.com:443 | https://www.evil.com :443 | Межсайтовый: разные домены |
| https:// логин .example.com:443 | Schemeless same-site: разные поддомены не имеют значения | |
| http ://www.example.com:443 | Бессхемный тот же сайт: разные схемы не имеют значения | |
| https://www.example.com: 80 | Бессхемный тот же сайт: разные порты не имеют значения | |
| https://www.example.com:443 | Схема без одного и того же сайта: точное совпадение | |
| https://www.example.com | Бессхемный тот же сайт: порты не имеют значения |
Как проверить, является ли запрос «того же сайта», «того же источника» или «межсайтовым»
Все современные браузеры отправляют запросы с HTTP-заголовком Sec-Fetch-Site . Заголовок имеет одно из следующих значений:
-
cross-site -
same-site(относится к схематичному тому же сайту) -
same-origin -
none
Вы можете проверить значение Sec-Fetch-Site , чтобы определить, является ли запрос запросом того же сайта, того же источника или межсайтовым.
Вы можете обоснованно доверять значению заголовка Sec-Fetch-Site , потому что:
- Заголовки HTTP, начинающиеся с
Sec-не могут быть изменены с помощью JavaScript. - Браузер всегда устанавливает эти заголовки.