带有预签名 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>

感谢任何帮助。

【问题讨论】:

可能不是整个问题,但使用 &lt;AllowedHeader&gt;*&lt;/AllowedHeader&gt; 直到 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 的改进

放入 S3 预签名 URL 时如何修复“403 Forbidden”

S3 预签名上传 url 错误