代码之家  ›  专栏  ›  技术社区  ›  Vinnie

reactjs-重定向前删除http头

  •  4
  • Vinnie  · 技术社区  · 8 年前

    在我的React应用程序中,我正在制作 GET rest web服务调用一个端点,其目的是生成一个预先指定的aws url到受保护的s3资产。我们通过了 Authorization 头和服务的令牌。

    此初始调用按预期工作,服务以重定向(通过307响应代码)响应,并在响应的 Location 标题。

    我面临的问题是,当遵循重定向时,amazon会拒绝带有400响应代码和以下消息的调用。

    Only one auth mechanism allowed; only the X-Amz-Algorithm query parameter, Signature query string parameter or the Authorization header should be specified.
    

    有没有办法把 授权 在遵循重定向之前的标题?

    这似乎是一种相当常见的情况(当react应用程序需要访问受保护的s3资产时)-有没有更好的方法来处理这个用例?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Vinnie    8 年前

    在与amazon支持人员进行了几次对话之后,实现上述目标的方法是使用cloudfront发行版将s3置于前端。CloudFront不具有与S3相同的限制 Only one auth mechanism allowed

    以下是我所做的:

    • 使用s3源创建cloudfront发行版。
      • 可选选择-限制Bucket访问。
      • 您需要一个cloudfront访问标识(使用现有的或创建一个新的)。
      • 建议选择-更新存储桶策略
    • 在S3中
      • 确保更新了bucket策略(在上面选择“更新bucket策略”时自动填充)
      • 使用需要支持的方法/头更新cors配置

    您需要的另一件事是一个cloudfront密钥对,如前所述 here 然后在 generating the presigned link .

    更多信息

    亚马逊肯定会让这件事变得比它需要的复杂得多(即为什么 只允许一个身份验证机制 对s3的限制?)但至少对那些需要它的人有一个解决办法。