CORS

Cross-Origin Resource Sharing (сокращенно CORS) – это механизм, который позволяет предоставить браузеру доступ с одного веб-ресурса к данным другого веб-ресурса. Механизм CORS поддерживается всеми современными браузерами и играет важную роль в обеспечении безопасности и функциональности веб-приложений.

Пример

На веб-ресурсе https://example.net доступен ваш видеопоток. У вас есть два бизнес-партнёра, с которыми вы договорились о том, что они могут встраивать ваш видеопоток на свои веб-ресурсы: https://partner1.net и https://partner2.net.

Используя 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

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

Правила обработки HTTP-заголовков

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

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

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

Если какой-либо заголовок CORS выставлен одновременно на Платформе NGENIX и на вашем сервере оригинации, Платформа удалит ваш заголовок. Это необходимо для того, чтобы избежать дублирования заголовков CORS, так как это может быть воспринято браузером как ошибка.

Last updated