Когато WinHTTP редува 407 и 401
Запазете избраното състояние за удостоверяване на прокси и го прилагайте отново преди повторни опити, като обработвате отделно предизвикателство от дестинацията.
Заявка на WinHTTP се удостоверява към проксито, получава 401 от сайта и след това при следващото изпращане получава още един 407. Проксито и сайтът имат отделно състояние за удостоверяване и пътят за повторно изпращане трябва да запази и двете.
Примерът за удостоверяване на WinHTTP от Microsoft пази избраната прокси схема в променлива и прилага отново прокси акаунта преди всяко WinHttpSendRequest, след като тази схема бъде избрана.
- Изпратете заявката и прегледайте отговора.
- При 407 заявете предложените схеми и запомнете избраната прокси схема.
- Преди повторното изпращане извикайте WinHttpSetCredentials за WINHTTP_AUTH_TARGET_PROXY с тази схема и акаунт.
- При 401 от дестинацията вземете нейната схема и задайте нейните сървърни удостоверения, като запазите запомненото прокси състояние за следващото изпращане.
Примерът изрично отбелязва повторното удостоверяване след предизвикателство от сървъра или пренасочване като причина за повторно прилагане на прокси удостоверенията. Поставянето на извикването само в първия клон за 407 може да остави друг път за повторен опит без очакваната настройка.
Проверявайте всеки резултат от API и ограничавайте повтарящите се неуспехи. Компактният пример на Microsoft следи предишния статус, а производствената политика за повторни опити трябва също да разпознава повтаряща се редуваща се последователност.
Ако след неуспех потребителят предостави заместващ акаунт, актуализирайте стойностите, които използва този път за повторно изпращане. WinHttpSetCredentials е обвързан със заявката; той не е хранилище за пароли на ниво процес, чието съдържание се заменя за всички бъдещи заявки.