【问题标题】:Do not propagate headers on HTTP redirects不要在 HTTP 重定向上传播标头
【发布时间】:2012-10-21 00:25:23
【问题描述】:

我在 Amazon S3 上托管了文件,我想在我的应用程序中处理后下载它们。此应用程序视图需要 HTTP 授权标头才能继续。流程如下:

  1. 使用所需的Authorization 请求标头查询视图/file/xxx
  2. 如果应用访问被授予,做一些处理
  3. 生成一个签名的 S3 url,并重定向到它

事实上,request header也在redirect上传播,和亚马逊的S3签名冲突,我有如下错误信息:

应指定 Signature 查询字符串参数或 Authorization 标头,而不是同时指定两者

那么,有没有办法不将Authorization 标头传播到 S3 ?

请注意,我已经测试了所有3xx HTTP 代码。提前致谢。

【问题讨论】:

  • 你找到解决方案了吗?
  • 客户端有责任传播或不传播标头,并且似乎是可变的...从内存中,我绕过了通过 GET 参数传递我的授权令牌的冲突。
  • 谢谢,在我的情况下,魔鬼在细节中,不幸的是:stackoverflow.com/questions/33714122

标签: django http redirect amazon-s3 http-headers


【解决方案1】:

您的 S3 文件路径是否与您的 /file/xxx 位于同一域中?这可以解释为什么要发送 Authorization 标头。如果您将 S3 托管在与应用程序视图不同的域上,那么我会假设 Authorization 标头不会发送到 S3 域(因为 HTTP 授权是每个域的)。

【讨论】:

  • 感谢您的回复 Matthew,但这恰恰不在同一个域中。 /file/xxx 是本地的,由我的开发计算机上的 Django 支持。
【解决方案2】:

这可能取决于您的客户,例如:https://code.google.com/p/go/issues/detail?id=4800

默认情况下,curl 似乎不会继承您的 Authorization 标头。但我正在处理一个类似的问题,我看到默认情况下 http 组件似乎带有它。

【讨论】:

    猜你喜欢
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多