我正在尝试使用 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/