Всегда используйте аутентификацию в Касабланке / cpprestsdk - PullRequest
0 голосов
/ 29 января 2020

Я использую Casablanca / cpprestsdk 2.10.12 в собственном проекте C ++ для Visual Studio 2017 для отправки и получения файлов из нашей файловой службы. Доступ предоставляется только в том случае, если правильное имя пользователя и пароль отправлены через basi c auth.

Я делаю следующее:

auto newCfg = http_client_config{};
newCfg.set_credentials(L"user", L"password");
auto newClient = http_client(L"http://fileserver", newCfg);

...

newClient.request(methods::GET, "/L1/settings/linesettings/globalsettings.ini").get();

Наш файловый сервер регистрирует сообщения, и я вижу каждый запрос в результате получается та же последовательность GET-UNAUTHORIZED-GET_WITH_AUTH:

enter image description here

Я хотел бы уменьшить количество запросов, отправив информацию аутентификации с первым GET или запрос PUT.

Еще большая проблема возникает при отправке запроса PUT. Он также отправляется без аутентификационной информации, и сервер отвечает «401 Unauthenticated», но http_client :: request не повторяет попытку с информацией об аутентификации (может быть, это не может быть из-за того, что тело контента прикреплено к запросу PUT, который отправляется через provider_consumer_buffer)

Я попытался добавить user_info к uri (http://user:password@fileserver), который я использую для создания http_client, но он вообще не использовался в запросе.

Я думаю Я мог бы добавить заголовок аутентификации к запросу сам (как описано в Установить базовую c HTTP-аутентификацию в Касабланке ), но мне это не кажется правильным.

Что еще можно попробовать? Любой вклад будет оценен.

...