Same Origin Policy (SOP) — это критически важный механизм безопасности в веб-браузерах, который ограничивает взаимодействие между ресурсами с разных источников. Он предотвращает выполнение потенциально опасных межсайтовых запросов, защищая пользователей от атак, таких как CSRF (Cross-Site Request Forgery) или утечки данных.
Два URL считаются имеющими одинаковый источник, если у них совпадают:
http://
или https://
)example.com
):80
для HTTP или :443
для HTTPS по умолчанию)Примеры:
// Same Origin
https://example.com/page1 и https://example.com/page2
// Different Origin (разные протоколы)
http://example.com и https://example.com
// Different Origin (разные домены)
https://example.com и https://sub.example.com
// Different Origin (разные порты)
https://example.com и https://example.com:8080
AJAX-запросы: Браузер блокирует запросы между разными источниками.
// Запрос с example.com к api.another.com будет заблокирован
fetch('https://api.another.com/data')
.then(response => response.json())
.then(data => console.log(data)); // Ошибка CORS
Доступ к DOM: Скрипты с одного сайта не могут получить доступ к DOM другого сайта в iframe.
Cookies/Storage: Данные хранилища изолированы для каждого источника.
Для легитимных межсайтовых запросов используются:
Пример CORS-заголовков:
Access-Control-Allow-Origin: https://your-site.com
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: Content-Type
Некоторые ресурсы могут загружаться кросс-доменно:
<img src="...">
<script src="...">
(но код выполняется в контексте текущего источника)<link rel="stylesheet">
<video>
, <audio>
)SOP — фундаментальный механизм безопасности браузеров, который предотвращает межсайтовые атаки, ограничивая взаимодействие между разными источниками. Для легитимных кросс-доменных запросов используются специальные технологии вроде CORS, а понимание SOP критически важно для разработки безопасных веб-приложений.