amazon-web-services - AWS JS SDK 中 listBuckets 的 CORS 错误

标签 amazon-web-services amazon-s3 aws-sdk

我正在尝试使用 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/. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://palombpramalis.local:8888' is therefore not allowed access. The response had HTTP status code 403.

如何为 https://s3-us-west-2.amazonaws.com/ 配置 CORS ?

AWS 文档仅讨论为特定存储桶配置 CORS http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/browser-configuring.html . 但是这个请求是为了列出经过身份验证的用户的所有存储桶。

最佳答案

S3 区域端点,例如 s3-region.amazonaws.com 不支持 CORS。 CORS 仅在存储桶上受支持(在您启用它之后)。所以你不能调用 listBuckets。如果 AWS 启用了这一点,那就太好了,但可能有令人信服的理由不这样做。

如果需要,您可以通过在 Web 客户端中对存储桶名称进行硬编码(不理想),或者通过在存储在 S3 中的可读 JSON 文件中维护存储桶列表来解决此问题。就个人而言,我更喜欢后者,并会尝试使用 AWS Lambda 来维护文件。 .当然,您也可以要求用户提供存储桶名称,但他们通常不知道。

关于amazon-web-services - AWS JS SDK 中 listBuckets 的 CORS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35004258/

相关文章:

java - 将策略分配给 S3 存储桶以便仅由 CloudFront 分配使用

c# - 在 AWS SDK .net 中获取时间戳错误

node.js - AWS API Gateway 限制仅从 S3 静态网页进行访问

node.js - 是否可以使用比 AWS Lambda 中提供的更新版本的 aws-sdk?

mysql - 使用 AWS RDS 在 Heroku App 上获取 Mysql2::Error(SSL 连接错误:ASN:错误的其他签名确认)

amazon-web-services - AWS CLI - 使用 jmespath 查询的结果

postgresql - 从 Redshift 卸载到 S3 : Authentication not working

python - 使用 HDF5 格式将 pandas 数据帧写入 S3

amazon-web-services - 为什么我的 [] 没有压平我的 jmespath 数组

amazon-web-services - 更改 AWS RDS 实例的参数组