WinHTTP에서 WinINet 프록시 구성 설정
WinHTTP 5.1에서 자동 프록시 설정
WinINet에서 WinHTTP로 포트하는 애플리케이션은 WinINet 또는 IE(인터넷 Explorer)에서 검색할 수 있는 동일한 자동 프록시 설정을 사용해야 할 수 있습니다. WinHTTP 버전 5.1 API는 이러한 프록시 설정을 검색하고 사용할 수 있습니다. 일반적으로 WinHTTP는 세션을 만들 때 세션별로 프록시 및 프록시 바이패스 서버를 지정합니다. 이러한 설정은 요청별로 재정의할 수 있습니다.
WinINet 또는 IE와 동일한 프록시 구성을 사용하려면 WinHTTP 클라이언트가 세션에 대한 프록시 설정을 설정해야 합니다. 또한 IE 또는 WinINet이 WPAD(웹 프록시 자동 검색)를 사용하도록 구성된 경우 해당 설정을 사용하는 WinHTTP 클라이언트는 요청별로 프록시 설정을 설정해야 합니다. 다음 섹션에서는 세션 및 요청에 대한 프록시 설정을 지정하는 방법을 설명합니다.
세션에서 프록시 구성 설정
애플리케이션이 사용자 계정에서 실행 중
세션을 만들기 전에 애플리케이션은 WinHttpGetIEProxyConfigForCurrentUser 를 호출하여 IE 프록시 설정을 가져옵니다. 이러한 설정을 가져오려면 애플리케이션이 사용자 계정으로 실행되어야 합니다. pProxyConfig 매개 변수는 프록시 이름(lpszProxy) 및 프록시 바이패스(lpszProxyBypass) 서버를 포함하는 WINHTTP_CURRENT_USER_IE_PROXY_CONFIG 구조체에 대한 포인터입니다. 그런 다음 WINHTTP_CURRENT_USER_IE_PROXY_CONFIG 구조의 프록시 이름 및 프록시 바이패스 값을 사용하여 WinHTTP 세션을 초기화합니다. 세션은 WINHTTP_CURRENT_USER_IE_PROXY_CONFIG 구조체의 lpszProxy 및 lpszProxyBypass 멤버에서 가져온 pwszProxyName 및 pwszProxyBypass 매개 변수를 사용하여 WinHttpOpen을 호출하여 초기화됩니다.
애플리케이션이 서비스로 실행 중
애플리케이션은 WinHttpGetIEProxyConfigForCurrentUser를 호출하기 전에 개별 사용자의 레지스트리 설정이 레지스트리에 로드되었는지 확인해야 합니다. 이러한 설정이 레지스트리에 로드되지 않은 경우 WinHttpGetIEProxyConfigForCurrentUser 는 프록시 설정을 가져올 수 없습니다. 개별 사용자에 대한 레지스트리 설정은 LoadUserProfile 함수를 호출하여 레지스트리에 로드할 수 있습니다. 사용자의 레지스트리 설정을 로드하는 것이 옵션이 아닌 경우 애플리케이션은 dwAcessType 매개 변수에 지정된 WINHTTP_ACCESS_TYPE_DEFAULT_PROXY사용하여 WinHttpOpen을 호출할 수 있습니다. WinHttpOpen 호출에서 기본 프록시를 지정하면 WinHTTP proxycfg.exe유틸리티를 사용하여 프록시 구성 집합을 검색하도록 WinHTTP API에 지시합니다. 개별 사용자에 대한 레지스트리 설정이 로드된 후 애플리케이션 은 사용자 계정에서 실행되는 애플리케이션 아래에 설명된 단계를 따라 프록시 이름 및 프록시 바이패스 서버를 설정합니다.
단일 요청에 프록시 구성 설정
세션을 만들기 전에 애플리케이션은 WinHttpGetIEProxyConfigForCurrentUser 를 호출하여 WinINet 및 IE가 WPAD를 사용하도록 구성되어 있는지 확인합니다. WinHttpGetIEProxyConfigForCurrentUser는 fAutoDetect 멤버가 포함된 WINHTTP_CURRENT_USER_IE_PROXY_CONFIG 구조를 반환합니다. 이 멤버에 대한 TRUE 값은 WPAD가 사용되고 lpszAutoConfigUrl 멤버에 WPAD URL이 포함되어 있음을 나타냅니다.
자동 프록시 구성 사용
WPAD를 사용하는 경우 애플리케이션은 WinHttpGetProxyForUrl 을 호출하여 요청에 대한 프록시를 검색합니다. lpwszUrl 매개 변수에는 요청이 전송되는 URL이 포함되며 pAutoProxyOptions 매개 변수에는 autoproxy 옵션이 포함된 구조체(WINHTTP_AUTOPROXY_OPTIONS)에 대한 포인터가 포함되어 있습니다. 애플리케이션은 WinHttpGetIEProxyConfigForCurrentUser 호출의 WINHTTP_CURRENT_USER_IE_PROXY_CONFIG 구조에서 반환된 설정을 사용하여 WINHTTP_AUTOPROXY_OPTIONS 구조를 초기화합니다. WINHTTP_AUTOPROXY_CONFIG_URL 플래그는 WINHTTP_AUTOPROXY_OPTIONS 구조체의 dwFlags 멤버에 지정되고 lpszAutoconfigUrl 멤버에는 WINHTTP_CURRENT_USER_IE_PROXY_CONFIG 구조체의 프록시 자동 구성 URL이 포함됩니다. WinHttpGetProxyForUrl 함수는 WINHTTP_PROXY_INFO 구조체의 lpszProxy 및 lpszProxyBypass 멤버에 프록시 이름과 프록시 바이패스 목록을 반환합니다.
요청에 대한 프록시를 WinHttpGetProxyForUrl에서 가져온 후 애플리케이션은 WinHttpOpenRequest를 사용하여 요청을 만듭니다. 그런 다음, hInternet 매개 변수에서 요청 핸들을 지정하여 요청에 대한 프록시를 설정하기 위해 WinHttpSetOption이 호출됩니다. WinHttpSetOption 호출의 dwOption 매개 변수는 WINHTTP_OPTION_PROXY 설정해야 하며 lpBuffer 매개 변수는 요청에 사용할 프록시 및 프록시 바이패스를 포함하는 WINHTTP_PROXY_INFO 구조체에 대한 포인터입니다.
자동 프록시 구성이 사용되지 않음
WinHttpGetIEProxyConfigForCurrentUser 호출에서 autoproxy가 사용되지 않음을 나타내는 경우 애플리케이션은 WinHttpOpenRequest를 사용하여 요청을 만들 수 있습니다. 프록시 구성은 전체 세션에 대해 동일하며 요청당 변경이 필요하지 않습니다.