CORS
Cross-Origin Resource Sharing (сокращенно CORS) – это механизм, который позволяет предоставить браузеру доступ с одного веб-ресурса к данным другого веб-ресурса. Механизм CORS поддерживается всеми современными браузерами и играет важную роль в обеспечении безопасности и функциональности веб-приложений.
Пример
На веб-ресурсе https://example.net доступен ваш видеопоток. У вас есть два бизнес-партнёра, с которыми вы договорились о том, что они могут встраивать ваш видеопоток на свои веб-ресурсы: https://partner1.net и https://partner2.net.
Используя CORS, вы можете разрешить доступ к видеопотоку только пользователям веб-ресурсов бизнес-партнеров. Пользователи других веб-ресурсов не смогут получить доступ к видеопотоку через свои браузеры.
Как работает CORS?¶
Чтобы определить, имеет ли один веб-ресурс доступ к другому, браузер отправляет HTTP-запрос к второму веб-ресурсу. Этот запрос может быть «простым» или «предварительным».
- Браузер формирует простой запрос при соблюдении определённых условий. Если хотя бы одно из этих условий не выполнено, то браузер сначала отправляет предварительный запрос.
- Метод запроса может быть
GET,HEADилиPOST. - Допустимыми значениями HTTP-заголовка
Content-Typeявляютсяapplication/x-www-form-urlencoded,multipart/form-dataилиtext/plain.
- Метод запроса может быть
- В отличие от простых запросов, предварительный запрос (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¶
Для настройки CORS вам необходимо настроить сервер оригинации, добавив необходимые HTTP-заголовки. Платформа NGENIX передает HTTP-заголовки, выставляемые сервером оригинации к пользователям.
Правила обработки HTTP-заголовков
HTTP-заголовки CORS могут быть выставлены Платформой NGENIX. Для настройки сообщите инженеру NGENIX следующую информацию:
- Идентификатор сервисной конфигурации (ConfID).
- Список необходимых HTTP-заголовков CORS и их содержание.
- Заголовки и их значения для ответа на предварительные запросы (preflight) с методом Options (options_response).
Если не настраивать заголовки и их значения для ответа на предварительные запросы (preflight) с методом Options (options_response) то Платформа на все подобные запросы всегда будет делать вызов с методом GET.
Если какой-либо заголовок CORS выставлен одновременно на Платформе NGENIX и на вашем сервере оригинации, Платформа удалит ваш заголовок. Это необходимо для того, чтобы избежать дублирования заголовков CORS, так как это может быть воспринято браузером как ошибка.