요청 핸들에서 WinHTTP 프록시 챌린지에 응답하기
프록시 인증 대상과 지원되는 제안 체계를 사용하여 WinHttpSetCredentials를 호출한 다음 요청을 의도적으로 다시 시도하세요.
WinHTTP 요청이 407을 받으면 WinHttpQueryAuthSchemes을 사용해 제안된 방식을 검사하고 클라이언트와 계정이 모두 지원하는 방식을 하나 선택합니다. 해당 요청에 자격 증명을 설정합니다:
WinHttpSetCredentials(
requestHandle,
WINHTTP_AUTH_TARGET_PROXY,
selectedScheme,
proxyUser,
proxyPassword,
nullptr);
마지막 예약 인수는 null이어야 합니다. 불리언 결과를 확인하고 실패하면 GetLastError을 확인합니다. 성공은 API가 설정을 받아들였다는 뜻이며, 프록시가 로그인을 받아들였다는 뜻은 아닙니다.
통제된 인증 흐름으로 다시 보내고 응답을 검사합니다. 재시도 횟수를 제한하세요. 작업을 반복하면 이미 소비한 요청 본문 스트림을 다시 재생할 수 있어야 합니다. 대상의 401은 WINHTTP_AUTH_TARGET_SERVER을 사용하며, 이 프록시 대상과 다릅니다.
이 자격 증명은 단일 요청에만 적용됩니다. WinHTTP는 이를 이후 요청을 위한 범용 자격 증명 저장소로 만들지 않습니다. 재사용된 인증 연결은 다른 챌린지를 일시적으로 숨길 수 있으므로 애플리케이션은 앞으로의 챌린지도 계속 처리해야 합니다.
프록시 선택은 따로 유지하세요. 자격 증명이 담긴 주소 문자열이 이 요청 핸들 API를 대체하지 않으며, 엔드포인트에 성공적으로 도달했다고 해서 인증이 완료되는 것도 아닙니다.