带有预签名 URL 和 CORS 问题的 S3 上传
Posted
技术标签:
【中文标题】带有预签名 URL 和 CORS 问题的 S3 上传【英文标题】:S3 upload with presigned URLs and CORS Issue 【发布时间】:2018-07-10 03:29:57 【问题描述】:我正在使用预签名 URL 将文件从我的 react 应用程序上传到 S3,Bucket 它本身是私有的,并且只为所有域启用了 CORS(用于开发环境)。
当 axios 帖子尝试上传文件时,我看到没有“Access-Control-Allow-Origin”标头出现错误。飞行前选项请求抛出此错误。
我正在本地机器上尝试这个。
这是我的 CORS 配置。我尝试了 AllowedOrigin 的通配符“*”,但没有成功。
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://localhost:3000</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<MaxAgeSeconds>300000</MaxAgeSeconds>
<AllowedHeader>authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
感谢任何帮助。
【问题讨论】:
可能不是整个问题,但使用<AllowedHeader>*</AllowedHeader>
直到 CORS 正常工作,然后仅在需要时更改此值。
将 值更改为 * 并且仍然有相同的问题。
您解决了吗?我有同样的问题。
【参考方案1】:
创建预签名 URL 的服务可能无效。在我的场景中,存储桶位于 eu-centar-1
上,但预签名密钥在 url 中有 us-east-1
。我修复了创建预签名密钥的服务并且它有效。它与起源无关。检查这在您的场景中是否可行
【讨论】:
以上是关于带有预签名 URL 和 CORS 问题的 S3 上传的主要内容,如果未能解决你的问题,请参考以下文章
仅从浏览器使用预签名 URL 上传时出现 AWS S3 CORS 错误
[AWS-S3] POST 上的预签名 URL 被 CORS 阻止,尽管 CORS 配置启用它
AWS S3 通过预签名 URL 上传返回 400 错误请求
Android 中 Amazon S3 预签名 URL 的改进