我在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?其次,是否有一种处理这种特殊情况的首选方式?
答案 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);