CORS
Cross-Origin Resource Sharing (сокращенно CORS) – это механизм, который позволяет предоставить браузеру доступ с одного веб-ресурса к данным другого веб-ресурса. Механизм CORS поддерживается всеми современными браузерами.
Чтобы определить имеет ли один веб-ресурс доступ ко второму веб-ресурсу, браузер формирует HTTP-запрос ко второму веб-ресурсу. Запрос может быть «простым» или «предварительным»:
- 1.Простой запрос формируется браузером если соблюден ряд условий. Например, метод запроса должен быть:
GET
,HEAD
илиPOST
, а допустимыми значениями HTTP-заголовка Content-Type являются:application/x-www-form-urlencoded
,multipart/form-data
илиtext/plain
. Если хотя бы одно из условий не соблюдено, то браузер формирует сначала предварительный запрос. - 2.Предварительный запрос (preflight), в отличие от простых запросов, представляет собой HTTP-запрос с методом OPTIONS ко второму веб-ресурсу, чтобы определить, является ли фактический запрос безопасным для отправки. Как только предварительный за прос завершен и веб-ресурс сообщает что доступ разрешен, то браузер отправляет фактический запрос.
Полный список условий, на основании которых браузер будет формировать «простой» или «предварительный» запрос, описан в спецификации CORS.
Если второй веб-ресурс разрешает первому веб-ресурсу обращаться к данным, то он об этом сообщает с помощью HTTP-заголовков CORS, среди которых:
- Access-Control-Allow-Origin. Содержит домен, доступ с которого разрешен. Специальное значение
*
означает что доступ к данным веб-ресурса разрешен с любого домена. - Access-Control-Max-Age. Содержит время в секундах, на которое может быть кэширован предварительный запрос.
- Access-Control-Allow-Methods. Содержит список HTTP-методов, которые разрешено использовать для доступа к данным веб-ресурса.
- Access-Control-Allow-Headers. Содержит список HTTP-заголовков, которые разрешено использовать для доступа к данным веб-ресурса.
Для настройки CORS вам необходимо настроить сервер оригинации, добавив необходимые HTTP-заголовки. Платформа NGENIX передает HTTP-заголовки, выставляемые сервером оригинации к пользователям.
Также, HTTP-заголовки CORS могут быть выставлены Платформой NGENIX. Для настройки сообщите инженеру NGENIX следующую информацию:
- Список необходимых HTTP-заголовков CORS и их содержание.
В случае, если какой-либо HTTP-заголовок CORS выставляется одновременно на Платформе NGENIX и вашем сервере оригинации, то ваш HTTP-заголовок будет удален Платформой NGENIX. Таким образом предотвращается дублирование HTTP-заголовков CORS, так как браузеры считает эту ситуацию ошибочной.