2016-01-25 3 views
0

Я пытаюсь listBuckets, связанный с авторизованным пользователем в интерфейсе с использованием AWS JS SDK.Ошибка CORS с listBuckets в AWS JS SDK

listBuckets API документация: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#listBuckets-property

И запрос listBucket не удалось со следующим сообщением об ошибке:

https://s3-us-west-2.amazonaws.com/. Ответ на предполетный запрос не проходит проверку контроля доступа: нет заголовка «Access-Control-Allow-Origin» на запрошенном ресурсе. Происхождение 'http://palombpramalis.local:8888' поэтому не разрешен доступ. Ответ был HTTP код статуса 403.

Как настроить CORS для https://s3-us-west-2.amazonaws.com/?

Документация AWS рассказывает о настройке CORS только для конкретного ведра http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/browser-configuring.html. Но этот запрос предназначен для перечисления всех ведер для аутентифицированного пользователя.

ответ

2

S3 региональные конечные точки, такие как s3- регион .amazonaws.com не поддерживают CORS. CORS поддерживается только на ведрах (после того, как вы включили его). Поэтому вы не можете вызвать listBuckets. Было бы здорово, если бы AWS включило это, но могут быть веские причины не делать этого.

Возможно, вам удастся обойти это, если потребуется, именами жесткого кодирования в вашем веб-клиенте (не идеальными) или путем сохранения списка ведер в читаемом файле JSON, хранящемся на S3. Лично я бы предпочел последний и попытался сохранить файл, используя AWS Lambda. Или вы могли бы попросить пользователя указать имя ведра, конечно, но они, как правило, не узнают об этом.

+0

Спасибо, что подтвердили это. backend node.js или python могут перечислить ведра. Поэтому я прибегаю к переносу этой функции в бэкэнд и отображению списка в fronend – satheeshram

+0

Я думал безсерверный, но если у вас есть сервер, тогда простой вызов REST для списка ковшей будет работать отлично. – jarmod

+1

, имеющий API-интерфейс JS listBuckets, создает впечатление, что это возможно; В документации Wish AWS можно четко указать, что этот API работает только с node.js; не работает в браузере. – satheeshram

Смежные вопросы