Кого пытается защитить CORS?
DOM и браузер
CORS защищает прежде всего пользователя (и его данные), не давая стороннему сайту читать ответы запросов, отправленных от имени пользователя к другому origin.
Кого и от чего защищает
CORS — часть политики Same-Origin Policy, которая защищает пользователя: не позволяет вредоносному сайту evil.com читать данные пользователя с bank.com, используя его авторизацию (cookie).
Пользователь залогинен на bank.com.
Открывает evil.com → тот делает fetch к bank.com/api.
Браузер БЛОКИРУЕТ чтение ответа (если bank.com не разрешил origin evil.com).Так злоумышленник не прочитает приватные данные пользователя через его же сессию.
Нюансы
- CORS защищает чтение ответа в браузере. Сам запрос часто доходит до сервера (поэтому изменяющие операции защищают ещё и CSRF-механизмами).
- Это защита браузера — вне браузера (curl, сервер) CORS не действует.
- Сервер решает, каким origin разрешить чтение (
Access-Control-Allow-Origin).
CORS против CSRF
- CORS/SOP — не даёт чужому сайту прочитать ответ.
- CSRF-защита — не даёт чужому сайту выполнить изменяющее действие.
Они дополняют друг друга.
Коротко для собеседования
CORS (через Same-Origin Policy) защищает пользователя: не даёт стороннему сайту читать ответы кросс-доменных запросов, отправленных с его cookie/сессией, к другому origin. Это защита браузера на чтение ответа; от изменяющих действий защищает CSRF-механизм. Разрешения задаёт сервер.