0

C で curl を使用して、複数のバージョンを持つ Web API に HTTP 要求を送信しています。ユーザー エージェントに応じて、Web サーバーは 301 応答を送信し、curl はリダイレクトに従おうとします。これはすべて設計どおりに機能しますが、壊れる特別なケースがあります。

認証リクエストを送信していて、ドメイン名を指定していない場合 ( https://test.example.com/serverではなくhttps://test.example/server )、Web サーバーはアプリをhttpsにリダイレクトします。 //test.example.com/serverv2、ドメイン名を追加します。しかし、リダイレクト後の 2 回目の試行からの応答は 401、「ヘッダーから資格情報を解析できませんでした」です。ドメイン名を省略しないと、リダイレクトを含め、すべてが期待どおりに機能し、承認が成功します。

私の質問は次のとおりです。これはcurlの組み込み機能ですか、それともバグですか? 次に、この特殊なケースを処理するための好ましい方法はありますか?

4

1 に答える 1

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);
于 2013-07-12T15:04:36.997 に答える