Если ваш сайт использует объекты в хранилище S3, браузер может заблокировать такие запросы из соображений безопасности. Это связано с механизмом CORS (Cross-Origin Resource Sharing), который предотвращает несанкционированное взаимодействие между различными источниками данных.
Чтобы браузер разрешил загружать объекты, нужно настроить правила CORS для S3-бакета. Это позволит вашему веб-ресурсу свободно взаимодействовать с объектами в хранилище и избежать ошибок при доступе к данным.
В этой статье мы расскажем, как настроить CORS через AWS CLI.
Создание политики CORS
Прежде всего необходимо создать JSON-файл с правилами конфигурации CORS. Например, создадим файл cors-config.json со следующим содержимым:
{
"CORSRules": [
{
"AllowedHeaders": ["*"],
"AllowedMethods": ["GET", "POST", "PUT"],
"AllowedOrigins": ["*"],
}
]
}
Где:
- AllowedHeaders — определяет заголовки, которые могут быть переданы в CORS-запросах,
- AllowedMethods — определяет разрешенные HTTP-методы,
- AllowedOrigins — определяет, с какого домена могут быть отправлены запросы. Символ
*
разрешает доступ из любого источника. Если вы хотите разрешить запросы с определенного домена, укажите его URL вместо звездочки:
"AllowedOrigins": ["https://example.com"]
Загрузка правил CORS в бакет
Чтобы загрузить политику CORS в S3-бакет, воспользуйтесь командой:
aws s3api put-bucket-cors --bucket bucket_name --endpoint-url https://s3.regru.cloud --cors-configuration file://cors-config.json
Проверка установленных правил CORS
Чтобы проверить, установились ли правила после загрузки конфигурации, воспользуйтесь командой:
aws s3api get-bucket-cors --bucket bucket_name --endpoint-url https://s3.regru.cloud
Эта команда вернет текущую конфигурацию CORS для указанного бакета в формате JSON.
Чтобы убедиться, что политика работает, сделайте запрос к объекту в бакете, например, с помощью curl:
curl -v s3.regru.cloud/bucket_name/object
Удаление правил CORS
Если вам нужно удалить текущие правила CORS, выполните команду:
aws s3api delete-bucket-cors --bucket bucket_name --endpoint-url https://s3.regru.cloud
После выполнения этой команды кросс-доменные запросы к бакету снова будут заблокированы.
Помогла ли вам статья?
Спасибо за оценку. Рады помочь 😊