我正在尝试使用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。 但是此请求用于列出经过身份验证的用户的所有存储桶。
答案 0 :(得分:3)
S3区域端点(例如s3- region .amazonaws.com)不支持CORS。 CORS仅在存储桶上支持(启用后)。所以你不能调用listBuckets。如果AWS启用此功能会很棒,但可能有令人信服的理由不这样做。
如果需要,您可以通过在Web客户端中硬编码存储桶名称(非理想),或者通过在存储在S3中的可读JSON文件中维护存储桶列表来解决此问题。就个人而言,我更喜欢后者,并尝试使用AWS Lambda来维护文件。或者您可以要求用户提供存储桶名称,当然,但他们通常不会知道它。