Получение прокси от прокси PAC, требующего аутентификации
Я пытаюсь использовать WinHttpGetProxyForUrl
где файл PAC указан WINHTTP_AUTOPROXY_OPTIONS.lpszAutoConfigUrl
для доступа требуется базовая аутентификация HTTP.
Есть ли способ вызвать всплывающее диалоговое окно обычной аутентификации или указать имя пользователя и пароль для использования прокси?
1 ответ
Автоматическая обработка диалога с учетными данными поддерживается только в WinInet. В WinHTTP вы должны предоставить способ самостоятельно получить имя пользователя и пароль и передать их WinHttpSetCredentials
или аналогичная функция. Я бы проверил на возвращаемое значение ERROR_WINHTTP_LOGIN_FAILURE
от WinHttpGetProxyForUrl
а затем запросите учетные данные пользователя. В этот момент вы можете попробовать одно из следующих действий, чтобы передать эти учетные данные WinHTTP:
- использование
WinHttpSetOption
сWINHTTP_OPTION_USERNAME
а такжеWINHTTP_OPTION_PASSWORD
установить имя пользователя и пароль и вспомнитьWinHttpGetProxyForUrl
, - Или вспомнить
WinHttpGetProxyForUrl
и поставлятьlpszAutoConfigUrl
параметр с URL, который содержит учетные данные. (т.е.http://user:pass@intranet/
).
Если вы не используете базовую аутентификацию, я бы посоветовал взглянуть на fAutoLogonIfChallenged
, но это бесполезно для вас.