---
title: "Настройка CORS для доступа к объектам S3"
---

# Настройка CORS для доступа к объектам S3

> Полный индекс документации для ИИ-агентов: [llms.txt](https://timeweb.cloud/llms.txt).

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

Для решения проблемы необходимо задать специальные правила CORS для бакета, которые разрешат выполнение кросс-доменных запросов. Настроить их можно через панель управления или с использованием утилит, например, AWS CLI.

## Настройка CORS через панель управления

1.  В панели управления откройте раздел «Настройки» вашего S3-бакета.
    
2.  Найдите параметр «CORS» и нажмите «Изменить».
    

![Selection 133](https://content.timeweb.com/assets/0dea8ac4-0a18-4344-8ba8-a327544f30fd.png?width=1048&height=647)

3.  Заполните необходимые параметры правил CORS:
    
    -   **Allowed Origins** — указывает источники (Origins), с которых разрешены запросы к бакету.  
        Например: `https://example.com`. Можно использовать символ `*` для разрешения запросов со всех доменов.
    -   **Allowed Methods** — определяет HTTP-методы, которые разрешены для запросов CORS.
    -   **Allowed Headers** — указывает заголовки, которые разрешены в запросах.  
        Например: `Authorization`, `Content-Type`. Можно указать `*`, чтобы разрешить все заголовки.
    -   **Expose Headers** — список заголовков, которые будут доступны клиенту в ответе. По умолчанию доступ к некоторым заголовкам блокируется браузером.  
        Например: `ETag`, `x-amz-meta-custom-header`.
    -   **Max Age Seconds** — определяет время в секундах, в течение которого результаты CORS-запроса можно кэшировать на стороне клиента.  
        Например: `3600` (1 час).

![Selection 134](https://content.timeweb.com/assets/3fe7eedf-c3ec-4dfc-8328-64c96693ff99.png?width=404&height=565)

Вы можете создать несколько правил (например, разрешить разные методы для разных источников), нажав на кнопку «Добавить правило».

4.  Сохраните изменения, нажав на кнопку «Сохранить».
    

## Настройка CORS через AWS CLI

Рассмотрим, как настроить CORS для S3-бакета с помощью утилиты [AWS CLI](https://timeweb.cloud/docs/s3-storage/tools/aws-cli).

### Создание файла с правилами CORS

Для начала создайте файл `cors.json` с конфигурацией CORS, который позволит выполнять GET и HEAD-запросы на объекты вашего бакета. Вот пример файла `cors.json`:

```shell
{
  "CORSRules": [
	{
  	"AllowedHeaders": ["*"],
  	"AllowedMethods": ["GET", "HEAD"],
  	"AllowedOrigins": ["*"]
	}
  ]
}
```

-   `AllowedMethods`: указывает, какие HTTP-методы будут разрешены. В данном примере разрешены GET и HEAD запросы.
    
-   `AllowedOrigins`: `"*"` означает, что запросы разрешены с любого домена. Если вы хотите ограничить доступ только для определённого домена, укажите его вместо звёздочки.
    

Например, если ваш сайт расположен на домене `https://example.com`, замените строку на:

```shell
"AllowedOrigins": ["https://example.com"]
```

### Загрузка правил CORS в бакет

После создания файла с правилами, загрузите его в ваш S3-бакет с помощью следующей команды:

```shell
aws s3api put-bucket-cors --bucket имя_бакета --endpoint-url https://s3.twcstorage.ru --cors-configuration file://cors.json
```

### Проверка установленных правил CORS

Вы можете проверить, что правила CORS были успешно установлены, выполнив команду:

```shell
aws s3api get-bucket-cors --bucket имя_бакета --endpoint-url https://s3.twcstorage.ru
```

### Удаление правил CORS

Если вам необходимо удалить текущие правила CORS, выполните команду:

```shell
aws s3api delete-bucket-cors --bucket имя_бакета --endpoint-url https://s3.twcstorage.ru
```

Команда удалит все существующие правила CORS для вашего бакета.
