停止curl在302重定向上发送授权标头

Mat*_*ser 6 redirect curl

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

curl -H "Authorization: Bearer <token>" https://www.example.com/api
Run Code Online (Sandbox Code Playgroud)

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

我添加了-L指示curl遵循重定向的选项:

curl -L -H "Authorization: Bearer <token>" https://www.example.com/api
Run Code Online (Sandbox Code Playgroud)

现在curl确实执行重定向.

这是问题所在:curl正在发送自定义Authorization标头以及重定向.我已经使用该-v选项对此进行了验证,因此它向我显示了它正在发送的标头.

新的服务器(我认为是Windows Azure)实际上使用400状态代码失败,因为它不喜欢Authorization标头.重定向的URL根本不需要授权标头.

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

Phi*_*sch 9

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

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

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

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