2013-07-12 21 views
0

我在C中使用curl將HTTP請求發送到具有多個版本的Web API。根據用戶代理的不同,Web服務器會發送一個301響應,curl會嘗試跟蹤重定向。這一切都按設計工作,但有一個特殊情況下它會中斷。curl_easy_perform不發送重定向到新域的授權憑證

當我發送的授權請求,我不指定域名 (的https://test.example/server代替https://test.example.com/server)Web服務器應用程序重定向到https://test.example.com/serverv2,增加對域名。但重定向後第二次嘗試的響應是401,「無法解析頭中的憑據」。如果我不忽略域名,一切都按預期工作,包括重定向,並且我的授權是成功的。

我的問題是:這是一個內置的功能捲曲還是它的錯誤?其次,是否有處理這種特殊情況的首選方法?

回答

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);