首页 > 解决方案 > AWS S3 - 没有设置 CORS,但 Amplify GET 请求正在工作?

问题描述

我有一个没有 CORS 配置的 S3 存储桶(它是空的),但使用 AWS AmplifyStorage.get我能够成功检索对象 URL。我期待一个 403 Forbidden 响应。

令人困惑的是,Storage.list确实会产生 403 Forbidden 响应,正如我所料。

代码示例 1 - 未在 S3 存储桶权限中设置 CORS

const URL = await Storage.get('file.jpg', {
    level: 'private',
    contentType: 'image/jpeg',
    expires: 5,
})

预期结果:403 错误,禁止。从源“source_url”访问“destination_url”处的 XMLHttpRequest 已被 CORS 策略阻止(因为默认情况下拒绝跨源请求,除非存在策略)

实际结果:无错误 -Amplify.get返回允许访问 file.jpg 的有效 URL

代码示例 2 - S3 存储桶权限中未设置 CORS

Storage.list('/', { level: 'private' })
.then(result => {
    // process response
})
.catch(err => console.log(err));

结果如预期:403 错误,禁止。从源“source_url”访问“destination_url”处的 XMLHttpRequest 已被 CORS 策略阻止

如果我在 S3 存储桶权限中设置 CORS,我可以使代码示例 2 工作。

我错过了什么?我希望 CORS 适用于Storage.get请求。

标签: amazon-s3corsaws-amplify

解决方案


推荐阅读