首页 > 解决方案 > 使用预签名 URL 将文件上传到 Amazon S3 时出现 CORS 错误

问题描述

我正在尝试使用 Angular 客户端将文件上传到 Amazon S3。我使用 NodeJs 应用程序服务器生成了预签名 URL。将文件上传到预签名 URL 时,出现以下错误:

“对预检请求的响应未通过访问控制检查:所请求的资源上不存在'Access-Control-Allow-Origin'标头。因此不允许访问源' http://localhost:4200 '。”

我已将以下 CORS 配置添加到我的存储桶权限中。

<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

标签: amazon-web-servicesamazon-s3corsaws-sdk

解决方案


我的问题是,即使在执行以下操作后,我也得到了相同的 CORS 错误——出于某种原因——getSignedUrl返回了一个如下所示的 url:

https://my-bucket.s3。us-west-2 .amazonaws.com/bucket-folder/file.jpg

我已经删除了区域部分 -us-west-2部分 - 并修复了它 ‍♂️</p>

所以现在是

https://my-bucket.s3.amazonaws.com/bucket-folder/file.jpg


推荐阅读