【问题标题】:Stopping curl from sending Authorization header on 302 redirect停止 curl 在 302 重定向上发送授权标头
【发布时间】:2016-10-18 08:46:10
【问题描述】:

我正在使用 curl 连接到 REST API。 REST API 在 Authorization 标头中使用 Bearer 令牌。所以我的curl 电话看起来像这样:

curl -H "Authorization: Bearer <token>" https://www.example.com/api

此 API 已开始返回 302 重定向以响应我的 API 调用。

我添加了-L 选项来指示curl 跟随重定向:

curl -L -H "Authorization: Bearer <token>" https://www.example.com/api

现在curl 会执行重定向。

问题出在:curl 将自定义 Authorization 标头与重定向一起发送。我已经使用 -v 选项验证了这一点,因此它向我显示了它正在发送的标头。

新服务器(我相信是 Windows Azure)实际上调用失败并显示 400 状态码,因为它不喜欢 Authorization 标头。重定向的 URL 根本不需要授权标头。

那么,我怎样才能让curl 不在重定向时发送我的自定义Authorization 标头?或者是否有另一种方法来指定 Authorization 标头以避免该问题。

【问题讨论】:

  • 您找到解决方法了吗?
  • 不单独使用curl。我最终放弃了-L 选项并自己解析了302 结果。

标签: redirect curl


【解决方案1】:

这已在curl 7.58.0 中修复。特别是为了避免将凭据泄露到重定向位置。

使用 curl 7.58.0 它应该可以在不进行任何更改的情况下工作。如果您仍想通过凭据,则必须使用 --location-trusted 选项。

除了使用-L 选项、自行解析Location 字段并对新位置发出单独请求之外,对于早期版本没有解决方法。 (正如马特豪泽所说)

您可以在here找到有关此更改的更多信息。

【讨论】:

  • 谢谢。 macOS 10.13.6 中包含的 curl 的版本是 7.54.0,因此解决方法是手动安装更新的 curl,可能使用 Homebrew:brew install curl 并按照说明将其放入 PATH,因为它是小桶-仅。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
  • 2020-05-22
相关资源
最近更新 更多