CORS-конфигурация бакетов
Статья создана
Обновлена 29 сентября 2025 г.
Object Storage позволяет управлять конфигурацией CORS бакета. Для загрузки конфигурации CORS в Object Storage необходимо сформировать XML-документ, описанный в этом разделе. Скачивая существующую конфигурацию, вы получаете документ такого же формата.
Общий вид конфигурации:
<ListBucketResult
xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<KeyCount>1</KeyCount>
<Name>my-sample-bucket</Name>
<Prefix></Prefix>
<MaxKeys>1000</MaxKeys>
<IsTruncated>false</IsTruncated>
<Contents>
<Key>text.txt</Key>
<LastModified>2025-05-15T07:23:08.030Z</LastModified>
<Owner>
<ID>ajegtlf2q28a********</ID>
<DisplayName>ajegtlf2q28a********</DisplayName>
</Owner>
<ETag>"f75a361db63aa4722fb8e083********"</ETag>
<Size>103</Size>
<StorageClass>STANDARD</StorageClass>
<TagSet></TagSet>
</Contents>
</ListBucketResult>
Конфигурация может содержать не более 100 правил.
Элементы
| Элемент | Описание |
|---|---|
CORSConfiguration |
Корневой элемент конфигурации CORS. Не может содержать более 100 элементов CORSRuleПуть: /CORSConfiguration. |
CORSRule |
Правило для фильтрации входящих запросов к ресурсу. Каждое правило должно содержать хотя бы по одному элементу AllowedMethod и AllowedOrigin.Путь: /CORSConfiguration/CORSRule. |
ID |
Уникальный идентификатор правила (не более 255 символов). Необязательный. Можно использовать для поиска правила в файле. Путь: /CORSConfiguration/CORSRule/ID. |
AllowedMethod |
HTTP метод (PUT, GET, HEAD, POST, DELETE), разрешенный для использования при кросс-доменном запросе. Каждый метод следует указать в отдельном элементе. Обязательно указать хотя бы один метод.Путь: /CORSConfiguration/CORSRule/AllowedMethod. |
AllowedOrigin |
Сайт, с которого разрешены кросс-доменные запросы к бакету. Должен быть указан хотя бы один элемент AllowedOrigin.Может содержать не более одного символа *. Примеры: http://*.example.com, *.Путь: /CORSConfiguration/CORSRule/AllowedOrigin. |
AllowedHeader |
Разрешенный заголовок в запросе к объекту. Если разрешенных заголовков несколько, то каждый следует указать в отдельном AllowedHeader. В имени заголовка можно использовать один символ * для определения шаблона, например <ListBucketResult
xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<KeyCount>1</KeyCount>
<Name>my-sample-bucket</Name>
<Prefix></Prefix>
<MaxKeys>1000</MaxKeys>
<IsTruncated>false</IsTruncated>
<Contents>
<Key>text.txt</Key>
<LastModified>2025-05-15T07:23:08.030Z</LastModified>
<Owner>
<ID>ajegtlf2q28a********</ID>
<DisplayName>ajegtlf2q28a********</DisplayName>
</Owner>
<ETag>"f75a361db63aa4722fb8e083********"</ETag>
<Size>103</Size>
<StorageClass>STANDARD</StorageClass>
<TagSet></TagSet>
</Contents>
</ListBucketResult> означает, что разрешены все заголовки.Запрос методом options содержит заголовок Access-Control-Request-Headers. Object Storage сопоставляет заголовки, переданные в Access-Control-Request-Headers, с набором AllowedHeader и отвечает на options списком разрешенных.Путь: /CORSConfiguration/CORSRule/AllowedHeader. |
MaxAgeSeconds |
Время в секундах, в течение которого браузер сохраняет в кеше результат запроса к объекту методом options. Путь: /CORSConfiguration/CORSRule/MaxAgeSeconds. |
ExposeHeader |
Заголовок, разрешенный к показу в JavaScript-приложении в браузере. Если допустимы несколько заголовков, то укажите каждый из них в отдельном элементе. В запросе к объекту JavaScript-клиент может оперировать только заголовками, определенными в элементах ExposeHeader.Путь: /CORSConfiguration/CORSRule/ExposeHeader. |
Пример
Приведенная ниже конфигурация позволяет отправлять кросс-доменные запросы с сайта http://www.example.com методами PUT, POST, DELETE без ограничений по заголовкам.
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>http://www.example.com</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>