【发布时间】:2012-07-11 23:55:06
【问题描述】:
我正在尝试使用WinHttpGetProxyForUrl,其中WINHTTP_AUTOPROXY_OPTIONS.lpszAutoConfigUrl 指定的PAC 文件需要HTTP 基本身份验证才能访问。
有什么方法可以弹出常规身份验证对话框或提供用于代理的用户名和密码?
【问题讨论】:
我正在尝试使用WinHttpGetProxyForUrl,其中WINHTTP_AUTOPROXY_OPTIONS.lpszAutoConfigUrl 指定的PAC 文件需要HTTP 基本身份验证才能访问。
有什么方法可以弹出常规身份验证对话框或提供用于代理的用户名和密码?
【问题讨论】:
仅WinInet 支持自动凭据对话处理。在 WinHTTP 中,您必须提供一种方法来自己获取用户的用户名和密码,并将其传递给WinHttpSetCredentials 或类似的函数。我会从WinHttpGetProxyForUrl 检查返回值ERROR_WINHTTP_LOGIN_FAILURE,然后询问用户的凭据。此时您可以尝试以下任一方法将这些凭据传递给 WinHTTP:
WinHttpSetOption 与WINHTTP_OPTION_USERNAME 和WINHTTP_OPTION_PASSWORD 设置用户名和密码并调用WinHttpGetProxyForUrl。WinHttpGetProxyForUrl 并为lpszAutoConfigUrl 参数提供一个包含凭据的URL。 (即http://user:pass@intranet/)。如果您没有使用基本身份验证,我建议您查看fAutoLogonIfChallenged,但这对您没有用处。
【讨论】: