我试图弄清楚如何使用 XHR 将浏览器直接上传到 Amazon S3。我正在使用一些预制代码来创建签名并执行上传。我所要做的就是输入我的 S3 安全凭证。(对于它的价值,我想使用 PHP 进行策略签名)。
我已经将代码分叉到我的 GitHub 帐户,你可以在这里找到它:https ://github.com/keonr/direct-browser-s3-upload-example
如自述文件所示,我已将 S3 存储桶 CORS 设置为允许所有来源,例如:
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Content-Type</AllowedHeader>
<AllowedHeader>x-amz-acl</AllowedHeader>
<AllowedHeader>origin</AllowedHeader>
</CORSRule>
</CORSConfiguration>
现在,当我尝试执行文件上传时,脚本返回,XHR Error
并且我的浏览器的错误控制台给了我一个标准的 CORS 错误,说我的 Origin 现在允许该 XHR 请求。我已经尝试了我能想到的一切。我已将*
通配符更改为请求源自的实际域,以允许*
通配符允许标头。似乎没有任何效果。它继续产生该 CORS 错误。
任何人都可以帮助我完成这项工作并成功完成将浏览器直接上传到 S3 吗?我不在乎通过哪种方式,我只需要能够完成它。另外,请记住,我是 S3 的新手,所以说明越明确越好。
谢谢!