Cross-Origin Resource Sharing (CORS) — это механизм безопасности уровня браузера, который контролирует, как веб-страницы могут запрашивать ресурсы с другого домена, протокола или порта, чем тот, что обслужил саму страницу.
Сервер должен явно разрешить запросы с других origin'ов, включив специальные HTTP-заголовки ответа:
Access-Control-Allow-Origin — указывает, какие origin'ы разрешены (например, * или конкретный домен)Access-Control-Allow-Methods — перечисляет разрешённые HTTP-методы (GET, POST и т.д.)Access-Control-Allow-Headers — указывает, какие заголовки запроса разрешеныЕсли эти заголовки отсутствуют или некорректны, браузер блокирует ответ, даже если сервер успешно обработал запрос.
Для не-простых запросов (например, с использованием PUT, DELETE или пользовательских заголовков) браузер автоматически отправляет preflight-запрос перед основным:
OPTIONS /api/data HTTP/1.1
Origin: https://example.com
Access-Control-Request-Method: POST
Сервер должен ответить с соответствующими заголовками Access-Control-Allow-*, чтобы подтвердить, что запрос разрешён. Только после этого браузер отправит основной запрос.
GET, POST со стандартными заголовками) пропускают этап preflightOPTIONSCORS полностью контролируется браузером, а не сервером. Сервер только объявляет свою политику через заголовки — именно браузер решает, разрешить или заблокировать ответ на основе этих заголовков.
Сервер может обойти ограничения CORS, установив Access-Control-Allow-Origin: * в заголовках ответа, что позволяет любому источнику получить доступ к его ресурсам без блокировки ответа браузером.
Новый — ещё не проверен сообществом
Вы