从需要身份验证的PAC代理获取代理

时间:2012-07-12 09:00:37

标签: winapi proxy winhttp pac

我正在尝试使用WinHttpGetProxyForUrlWINHTTP_AUTOPROXY_OPTIONS.lpszAutoConfigUrl指定的PAC文件需要HTTP基本身份验证才能访问。

是否有某种方法可以弹出常规身份验证对话框或提供用于代理的用户名和密码?

1 个答案:

答案 0 :(得分:1)

WinInet仅支持自动凭据对话框处理。在WinHTTP中,您必须提供一种方法来自行获取用户的用户名和密码,并将其传递给WinHttpSetCredentials或类似的功能。我会从ERROR_WINHTTP_LOGIN_FAILURE检查WinHttpGetProxyForUrl的返回值,然后询问用户的凭据。此时,您可以尝试以下任一方法将这些凭据传递给WinHTTP:

  1. 使用WinHttpSetOptionWINHTTP_OPTION_USERNAMEWINHTTP_OPTION_PASSWORD设置用户名和密码并调用WinHttpGetProxyForUrl
  2. 或者调用WinHttpGetProxyForUrl并为lpszAutoConfigUrl参数提供包含凭据的网址。 (即http://user:pass@intranet/)。
  3. 如果您没有使用基本身份验证,我建议您查看fAutoLogonIfChallenged,但这对您没用。