AWS JS SDK 中的 listBuckets 出现 CORS 错误

sat*_*ram 3 amazon-s3 amazon-web-services 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/。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问来源“ 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。但此请求用于列出经过身份验证的用户的所有存储桶。

jar*_*mod 5

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

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

  • 拥有 JS listBuckets API 给人的印象是这是可能的;希望AWS文档能够清楚地说明该API仅适用于node.js;在浏览器中不起作用。 (2认同)