curl_easy_perform在重定向到新域时不发送授权凭据

时间:2013-07-12 14:26:57

标签: curl https http-headers http-authentication

我在C中使用curl将HTTP请求发送到具有多个版本的Web API。根据用户代理,Web服务器发送301响应并且curl尝试遵循重定向。这一切都按设计工作,但有一个特殊情况,它会中断。

当我发送授权请求时,我没有指定域名 (https://test.example/server代替https://test.example.com/server)网络服务器将应用重定向到https://test.example.com/serverv2,添加域名。但重定向后第二次尝试的响应是401,“无法从头部解析凭据”。如果我不省略域名,一切都按预期工作,包括重定向,我的授权是成功的。

我的问题是:这是curl的内置功能还是bug?其次,是否有一种处理这种特殊情况的首选方式?

1 个答案:

答案 0 :(得分:0)

来自curl.h

/* Continue to send authentication (user+password) when following locations,
     even when hostname changed. This can potentially send off the name
     and password to whatever host the server decides. */
  CINIT(UNRESTRICTED_AUTH, LONG, 105)

我设置了此选项,它解决了我的问题。有时你只需要多挖一点。 :)

curl_easy_setopt (curl, CURLOPT_UNRESTRICTED_AUTH, 1);