Mel*_*Mel 6 amazon-s3 amazon-web-services cors
我正在尝试弄清楚如何配置 AWS S3 存储桶,以便我可以上传到它。我按照本教程中的说明进行操作,但仍然收到错误消息:
从源“http://localhost:3000”获取“https://s3.ap-southeast-2.amazonaws.com/”的访问已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明响应满足您的需求,请将请求模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。
我有一个存储桶(在开发中),具有以下 CORS 策略:
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"PUT",
"POST",
"DELETE"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": []
}
]
Run Code Online (Sandbox Code Playgroud)
我有一个存储桶策略如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:List*",
"s3:Get*"
],
Run Code Online (Sandbox Code Playgroud)
// 注意:我还尝试使用通配符“*”来允许所有操作,但我得到了与上面所示相同的错误消息
"Resource": [
"arn:aws:s3:::[MY_BUCKET_NAME]",
"arn:aws:s3:::[MY_BUCKET_NAME]/*"
]
}
]
Run Code Online (Sandbox Code Playgroud)
}
我可以看到AWS策略有一个额外的ACL部分,其中有勾选列表和读取的选项,但写入按钮呈灰色,并警告不要使用它以允许每个人写入。我勾选了它们以允许每个人都可以公开访问以列出和阅读(我不知道如何编辑灰色的写入选项)。我处于开发模式,想找到一种方法来测试连接是否可以正常工作,所以想写。即使当我尝试这样做时,我也会遇到与上面发布的相同的错误。
我正在寻找有关如何连接到 AWS S3 存储桶的最新说明。配置要求的变化似乎比博客教程的创建还要快。SO 上的许多答案不再映射到 AWS S3 配置文件中的配置设置。
您收到的 CORS 错误应该仅与 CORS 配置有关,与存储桶策略无关。
我注意到您引用的错误消息不包含存储桶名称。通常对于 CORS 错误,它应该如下所示:
'https://<bucket>.s3.eu-west-2.amazonaws.com/' from origin 'https://localhost:3001' has been blocked by CORS policy
Run Code Online (Sandbox Code Playgroud)
建议您仔细检查代码中的 BUCKET_NAME。
另外,我不知道您使用哪种方法来调用 API,但为了完整起见,您也可以包含该HEAD方法。
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"POST",
"GET",
"PUT",
"DELETE",
"HEAD"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": []
}
]
Run Code Online (Sandbox Code Playgroud)
对我来说,这对于从客户端上传来说效果很好。
| 归档时间: |
|
| 查看次数: |
14060 次 |
| 最近记录: |