Обзор
CORS (Cross-Origin Resource Sharing) — это механизм безопасности, который используется для контроля доступа к ресурсам из другого источника. В Object Storage CORS необходим для обеспечения безопасного доступа к объектам данных из веб-приложений, размещенных на других доменах.
Принцип работы
Заголовок раздела «Принцип работы»Обычно браузеры блокируют запросы, инициированные к ресурсам на других доменах. Такое ограничение называется Same-Origin Policy (политика одного источника). Согласно этой политике, веб-страница может свободно взаимодействовать только с ресурсами с аналогичным доменом, портом и протоколом. Например, страница на https://example.comможет запрашивать данные только с https://example.com. Если эта страница запросит данные с другого домена (например, https://api.anotherdomain.com), браузер заблокирует такой запрос.
Механизм CORS позволяет явно указать, какие внешние домены имеют право запрашивать ресурсы. Для этого используются специальные HTTP-заголовки. Перед тем, как выполнить кросс-доменный запрос, браузер отправляет на сервер предварительный (preflight) запрос с информацией о домене источника, используемом HTTP-методе и заголовках будущего запроса. Если данные, переданные в preflight-запросе, соответствуют правилам CORS, сервер разрешает кросс-доменный запрос.
Структура конфигурации CORS
Заголовок раздела «Структура конфигурации CORS»Конфигурация CORS устанавливается на уровне бакета. Она представляет собой набор правил в формате XML или JSON. Готовый файл с правилами можно загрузить с помощью утилиты AWS CLI.
В правилах указываются:
- разрешенные источники;
- разрешенные HTTP-методы (
GET,POSTи др.); - разрешенные HTTP-заголовки.
В состав конфигурации могут входить следующие элементы:
| Элемент | Описание | Пример |
|---|---|---|
AllowedOrigins | Разрешенные источники | "AllowedOrigins": ["https://www.example.com"] |
AllowedMethods | Разрешенные HTTP-методы | "AllowedMethods": ["GET", "PUT", "POST", "DELETE"] |
AllowedHeaders | Разрешенные HTTP-заголовки | "AllowedHeaders": ["Authorization", "Content-Type"] |
ExposeHeaders | Заголовки, доступные клиенту | ExposeHeaders": ["ETag"] |
MaxAgeSeconds | Время кэширования preflight-ответов | "MaxAgeSeconds": 3600 //1 час |
Особенности и ограничения
Заголовок раздела «Особенности и ограничения»- Конфигурация CORS должна включать не более 100 правил.
- Размер файла конфигурации не должен превышать 64КБ.
Проверка запросов
Заголовок раздела «Проверка запросов»Object Storage проверяет каждый запрос из браузера на соответствие настройкам CORS. Запрос признается соответствующим, если одновременно выполняются условия:
- значение заголовка
Originсовпадает с одним из источников, указанных в параметреAllowedOrigins; - используется один из методов, перечисленных в параметре
AllowedMethods; - значение заголовка
Access-Control-Request-Headersсовпадает со значением параметраAllowedHeaders.