CORS (Cross-Origin Resource Sharing) — это механизм, позволяющий веб-страницам запрашивать ресурсы с другого домена, порта или протокола, отличного от того, с которого была загружена сама страница. Это делается с помощью дополнительных HTTP-заголовков.
По умолчанию, браузеры применяют политику Same-Origin Policy (SOP), которая запрещает скриптам, выполняющимся на одной странице, доступ к данным с другого источника (домена, порта, протокола). CORS ослабляет эту политику контролируемым образом, предоставляя серверу возможность явно разрешать кросс-доменные запросы.
Как работает CORS:
Origin, указывающим источник запроса. Сервер, при получении этого заголовка, может ответить с заголовком Access-Control-Allow-Origin, указывающим разрешенный источник.PUT, DELETE, или с пользовательскими заголовками), браузер сначала отправляет предварительный (preflight) OPTIONS-запрос. Этот запрос спрашивает сервер, разрешено ли отправлять сам целевой запрос. Сервер отвечает с заголовками, указывающими разрешенные методы, заголовки и источники. Если preflight-запрос успешно завершается, браузер отправляет сам запрос.Основные заголовки CORS:
Origin: Отправляется браузером в запросе, указывает источник (домен, порт, протокол) страницы, инициирующей запрос.Access-Control-Allow-Origin: Отправляется сервером в ответе, указывает источник, которому разрешено получать ответ. Может быть конкретным доменом, * (любой источник), или динамически генерироваться сервером на основе заголовка Origin.Access-Control-Allow-Methods: Отправляется сервером в ответе на preflight-запрос, указывает разрешенные HTTP-методы (GET, POST, PUT, DELETE и т.д.).Access-Control-Allow-Headers: Отправляется сервером в ответе на preflight-запрос, указывает разрешенные заголовки запроса.Access-Control-Allow-Credentials: Отправляется сервером в ответе, указывает, разрешается ли принимать куки и другие учетные данные в запросе.Пример заголовков ответа сервера, разрешающих запросы с https://example.com:
plaintext
CORS необходим для корректной работы многих веб-приложений, использующих междоменные AJAX-запросы, таких как API-взаимодействие, загрузка шрифтов, использование Веб-шрифтов с CDN и т.п. Правильная настройка CORS на сервере критически важна для безопасности и функциональности приложения.