AWS JS SDK中的listBuckets出现CORS错误

时间:2016-01-25 23:12:43

标签: 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/。对预检请求的响应   没有通过访问控制检查:否'访问控制 - 允许 - 来源'   标头出现在请求的资源上。起源   ' http://palombpramalis.local:8888'因此不允许访问。   响应的HTTP状态代码为403。

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

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

1 个答案:

答案 0 :(得分:3)

S3区域端点(例如s3- region .amazonaws.com)不支持CORS。 CORS仅在存储桶上支持(启用后)。所以你不能调用listBuckets。如果AWS启用此功能会很棒,但可能有令人信服的理由不这样做。

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