Curl_easy_perform не отправляет учетные данные авторизации при перенаправлении на новый домен

Я использую curl в C для отправки HTTP-запросов в веб-API, который имеет несколько версий. В зависимости от пользователя-агента веб-сервер отправляет 301 ответ, и завиток пытается выполнить перенаправление. Все это работает так, как было разработано, но есть специальный случай, когда он ломается.

Когда я отправляю запрос авторизации И я не указываю имя домена (https://test.example/server вместо https://test.example.com/server), веб-сервер перенаправляет приложение на https://test.example.com/serverv2, добавив имя домена. Но ответ от второй попытки после перенаправления 401 "не может анализировать учетные данные из заголовка". Если я не опускаю доменное имя, все работает так, как ожидалось, включая перенаправление, и моя авторизация будет успешной.

Мой вопрос: это встроенная функция в curl или это ошибка? А во-вторых, есть ли предпочтительный способ борьбы с этим особым случаем?

1 ответ

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

licensed under cc by-sa 3.0 with attribution.