CORS

Cross-Origin Resource Sharing (сокращенно CORS) – это механизм, который позволяет предоставить браузеру доступ с одного веб-ресурса к данным другого веб-ресурса. Механизм 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

Для настройки CORS вам необходимо настроить сервер оригинации, добавив необходимые HTTP-заголовки. Платформа NGENIX передает HTTP-заголовки, выставляемые сервером оригинации к пользователям.

Также, HTTP-заголовки CORS могут быть выставлены Платформой NGENIX. Для настройки сообщите инженеру NGENIX следующую информацию:

  • Идентификатор сервисной конфигураций (ConfID).

  • Список необходимых HTTP-заголовков CORS и их содержание.

В случае, если какой-либо HTTP-заголовок CORS выставляется одновременно на Платформе NGENIX и вашем сервере оригинации, то ваш HTTP-заголовок будет удален Платформой NGENIX. Таким образом предотвращается дублирование HTTP-заголовков CORS, так как браузеры считает эту ситуацию ошибочной.