Общая информация
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
Через конфигуратор правил можно добавить несколько значений параметров.