VK Cloud Solutions logo

CORS

Общая информация

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

Иными словами, это механизм, использующий дополнительные HTTP-заголовки, чтобы дать возможность агенту пользователя получать разрешения на доступ к выбранным ресурсам с сервера на источнике (домене), отличном от того, что сайт использует в данный момент.

CORS поддерживает кросс-доменные запросы и передачу данных между браузером и web-серверами по защищенному соединению. Современные браузеры используют CORS в API-контейнерах, таких как XMLHttpRequest или Fetch, чтобы снизить риски, присущие запросам с других источников.

Сценарии использования

Ниже перечислены варианты использования технологии CORS.

  • Сценарий №1. Например, на персональных ресурсах размещается веб-сайт в бакете с названием website. Пользователи загружают URL-адрес конечной точки сайта. Теперь становится необходимо использовать JavaScript на веб-страницах, хранимых в этом бакете, чтобы отправлять аутентифицированные запросы GET и PUT для того же бакета с помощью конечной точки API сервиса для бакета. Обычно браузер предотвращает выполнение кода JavaScript, разрешающего такие запросы, но используя технологию CORS, можно настроить бакет так, чтобы запросы Cross-origin были разрешены с веб-сайта.
  • Сценарий №2. Например, необходимо разместить на своих ресурсах веб-шрифт из бакета сервиса. Браузеры обязательно проводят проверку CORS (предварительную проверку) для загрузки веб-шрифтов, так что необходимо настроить бакет, размещающий на своих ресурсах веб-шрифт, на разрешение создания запросов из любого источника.

Создание правила CORS

Сервис "Объектное хранилище" поддерживает технологию кросс-доменных запросов ресурсов в бакете. Создать правило можно на вкладке CORS открытого бакета.

Где:

  • AllowedOrigins - веб-сайт, с которого разрешены кросс-доменные запросы к бакету. Может содержать не более одного символа *
  • AllowedMethods - HTTP метод, разрешенный для использования при кросс-доменном запросе. Допускается использование нескольких методов в одном правиле
  • MaxAgeSeconds - время в секундах, в течение которого браузер сохраняет в кэше результат запроса к объекту методом options
  • AllowedHeaders - разрешенный заголовок в запросе к объекту. В имени заголовка можно использовать один символ * для определения шаблона. Объектное хранилище сопоставляет заголовки, переданные в Access-Control-Request-Headers, с набором AllowedHeaders и отвечает на options списком разрешенных
  • ExposeHeaders - заголовок, разрешенный к показу в JavaScript-приложении в браузере. В запросе к объекту JavaScript-клиент может оперировать только заголовками, определенными в элементах ExposeHeaders

При необходимости в конфигураторе правил можно добавить несколько значений параметров.