CORS.预签名网址.S3

ngz*_*cai 5 amazon-s3

我已经生成了预先签名的S3 POST URL.使用返回参数,然后我将它传递给我的代码,但我不断收到此错误Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource..

在Postman上,我可以用一个附件提交表单数据.

在PostMan上,我手动输入了参数 在此输入图像描述

然后将相同的参数输入到我的代码中. 在此输入图像描述

Har*_*nji 19

就我而言,我通过使用 allowedMethods 和 S3 中的起源来修复它。该菜单位于“权限”选项卡下

在此输入图像描述

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "PUT",
            "POST"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": []
    }
]
Run Code Online (Sandbox Code Playgroud)


Abd*_*UMI 13

您必须将CORS配置编辑为公共,例如:

   <?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • @ngzhongcai fwiw,它可以在邮递员和其他测试工具中使用,因为邮递员不是网站。CORS是一种浏览器机制,除非站点B同意通过“预检检查”来接受站点A的查看者的请求,否则它会阻止站点A向站点B(即您的存储桶)发出请求。当您使用一个网站访问另一个网站时,浏览器需要友好的CORS响应,但邮递员不需要/使用/触发此安全机制,因为它实际上是为了保护用户和网站B免受网站上潜在的恶意代码的侵害A,并且邮递员下没有站点A。 (5认同)
  • 有趣的是,人们经常认为邮递员证明没有 CORS 错误。 (5认同)
  • 这对 AllowHeader * 不起作用,有人解决了吗? (4认同)
  • 没有任何意义,因为我可以通过Postman上传。这是一个POST请求。不是GET (2认同)
  • 在哪里添加?在 S3 控制台 / yourBucket / Permissions / CORS 配置中并设置 &lt;AllowedOrigin&gt;https : //yourdomain.cloud&lt;/AllowedOrigin&gt; 在我的情况下 * 还不够...... (2认同)

小智 8

无法评论所以在这里添加这个。包含 Harvey 的答案,但采用文本形式以便于复制。

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "PUT",
            "POST"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": []
    }
]
Run Code Online (Sandbox Code Playgroud)


Mat*_*ard 5

我也遇到了这个问题。我的存储桶上的 COR 配置似乎是正确的,但我的预签名 URL 却遇到了 COR 问题。事实证明AWS_REGION,我的预签名者未设置为存储桶的 aws 区域。设置AWS_REGION到正确的区域后,它工作正常。我很恼火,因为 CORS 问题对一个简单的问题来说是一个红鲱鱼,浪费了我几个小时的时间。