小编Max*_*ies的帖子

如何允许对 AWS S3 存储桶发出 POST 请求?

问题

我正在尝试使用预先签名的发布请求将文件上传到 S3 存储桶(大致遵循此博客文章)。我的服务器(节点)使用 生成预签名的 post 请求createPresignedPost,然后将其返回给客户端(React),客户端使用它将用户生成的文件上传到我们的 S3 存储桶。

目前,POST客户端向存储桶发出的任何请求都会失败,并显示405 Method Not Allowed。我检查了响应标头,发现Allow标头没有列出POST,尽管Access-Control-Allow-Methods确实列出了。

我还需要执行其他操作才能允许对存储桶进行 POST 请求吗?

(注意 - 我尝试使用预签名POST请求而不是常规预签名网址(使用PUT)的原因是因为我需要指定文件类型和大小的限制,后者似乎不支持)

上下文/其他信息

S3 存储桶没有策略。它确实有一个 CORS 政策,即

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "POST",
            "PUT",
            "HEAD",
            "DELETE"
        ],
        "AllowedOrigins": [
            "http://localhost:3000",
            "http://localhost:8000",
            ...
        ],
        "ExposeHeaders": [
            "ETag",
            "x-amz-meta-custom-header"
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)

用于生成预签名 POST 请求的服务器端代码:

[
    {
        "AllowedHeaders": [ …
Run Code Online (Sandbox Code Playgroud)

javascript amazon-s3 node.js reactjs

5
推荐指数
0
解决办法
616
查看次数

标签 统计

amazon-s3 ×1

javascript ×1

node.js ×1

reactjs ×1