重定向后省略特定标头

时间:2016-01-14 09:38:16

标签: http redirect

我有一个Web服务器,其中包含一个API,用于将文件上传到Amazon的S3存储。由于我不想浪费资源通过我的服务器传输文件,当上传请求进入时,我为客户端生成pre-signed URL,然后使用HTTP 307 - Temporary redirect将该客户端重定向到此URL。 / p>

在实践中,流程如下所示:

  1. 客户端向我的服务器发出 PUT 请求,请求上传文件
  2. 我的服务器检查请求并为S3生成预先签名的URL
  3. 我的服务器通过307重定向到预先签名的URL来响应客户端
  4. 客户端将 PUT 请求重复到预先签名的网址
  5. 上传开始
  6. 挑战

    我的服务器使用 Authorization 标头来表示授权。顺便说一句,亚马逊也接受这个标题进行授权,尽管双方预期的价值完全不同。

    问题是,由于我的上传API要求在文件上传请求期间出现此标头,当我的服务器将307重定向发回客户端时,客户端会获取原始请求中的所有标头并将它们一起发送到预先签名的S3网址会导致请求因授权错误而被亚马逊拒绝

    问题

    在遵循重定向时,我可以以某种方式指示客户端(通过HTTP响应标头)包含授权标头吗?

    当前解决方案

    现在我们通过将预先签名的URL返回给响应正文中的客户端来“修复”此问题。然后,客户端在没有授权标头的情况下手动向该URL发出新的 PUT 请求。这很好用。我想知道如果没有这种额外的手工工作,是否有办法实现这种行为。

      

    什么是客户端?在上述声明中,当我提到“客户端”时,它现在可以是现代网络浏览器或原生iOS或Android应用程序。在iOS上,我们使用Alamofire进行HTTP通信。我不确定在Android上使用了哪些库或组件。

         

    注意:我看过this question and its answers,但它不包含我寻求的答案。

0 个答案:

没有答案