Политика одного источника по умолчанию ограничивает чтение ответов другим сайтом. CORS не отключает эту модель целиком, а задаёт контролируемые исключения, которые сервер сообщает браузеру.
Сервер проверяет Origin по точному списку доверенных источников, корректно обрабатывает preflight, ограничивает методы и заголовки и особенно осторожно разрешает credentials. CORS не заменяет аутентификацию и авторизацию API.
API должен быть доступен только приложению на `app.example.ru`. Сервер возвращает разрешающий заголовок для этого origin, но не отражает произвольное значение из запроса и не открывает credentialed-доступ всем сайтам.
CORS позволяет серверу сообщить браузеру, каким внешним origin разрешено читать его ответы.
Зачем нужен preflight-запрос?Для запросов с определёнными методами или заголовками браузер сначала отправляет OPTIONS и проверяет разрешения сервера.
Почему Access-Control-Allow-Origin: * не всегда безопасен?Звёздочка открывает чтение ответа любому origin и несовместима с credentialed-запросами; допустимость зависит от публичности ресурса.