2

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

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

4

1 回答 1

1

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

  1. 使用WinHttpSetOptionwithWINHTTP_OPTION_USERNAMEWINHTTP_OPTION_PASSWORD设置用户名和密码并调用WinHttpGetProxyForUrl
  2. 或者调用包含凭据的 URLWinHttpGetProxyForUrl并提供参数。lpszAutoConfigUrl(即http://user:pass@intranet/)。

如果您没有使用基本身份验证,我建议您查看 fAutoLogonIfChallenged,但这对您没有用。

于 2012-07-22T02:00:55.733 回答