ReactJS-在重定向之前删除HTTP标头

时间:2018-06-14 15:32:38

标签: reactjs rest amazon-web-services

在我的React应用程序中,我正在对端点进行GET REST Web服务调用,其目的是为受保护的S3资产生成预先签名的AWS URL。我们将Authorization标头和令牌传递给服务。

此初始调用按预期工作,服务使用重定向(通过307响应代码)进行响应,并在响应的Location标头中包含预签名URL。

我面临的问题是,当遵循重定向时,亚马逊拒绝使用400响应代码和以下消息进行呼叫。

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

在遵循重定向之前,有没有办法删除Authorization标题?

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

1 个答案:

答案 0 :(得分:1)

在与Amazon支持人员进行了数次对话之后,实现上述目标的方法是使用CloudFront发行版来推广S3。 CloudFront与使用Only one auth mechanism allowed

的S3没有相同的限制

这就是我所做的:

  • 创建具有S3来源的CloudFront发行版。
    • 可选选项-限制存储桶访问。
    • 您将需要一个CloudFront访问身份(使用现有身份或创建一个新身份)。
    • 推荐选择-更新存储桶策略
  • 在S3中
    • 确保存储桶策略已更新(在上面选择“更新存储桶策略”时自动填充)
    • 使用您需要支持的方法/标题更新CORS配置

您需要的另一件事是here中所述的CloudFront密钥对,然后在generating the presigned link时使用该信息。

更多信息

Amazon肯定使事情变得复杂得多(例如,为什么对S3完全有Only one auth mechanism allowed限制?),但至少有一种解决方法。