När WinHTTP växlar mellan 407 och 401
Behåll den valda autentiseringsstatusen för proxyn och tillämpa den igen före nya försök, medan en separat utmaning från målet hanteras.
En WinHTTP-begäran autentiserar mot proxyn, tar emot en webbplats 401 och får sedan ännu en 407 vid nästa sändning. Proxyn och webbplatsen har separata autentiseringsstatusar, och sändningsvägen måste behålla båda.
Microsofts ursprungliga WinHTTP-autentiseringsexempel håller det valda proxyschemat i en variabel och tillämpar proxykontot igen före varje WinHttpSendRequest efter att schemat valts.
- Skicka begäran och granska svaret.
- Vid 407: fråga efter de erbjudna schemana och kom ihåg det valda proxyschemat.
- Före omsändning, anropa WinHttpSetCredentials för WINHTTP_AUTH_TARGET_PROXY med det schemat och kontot.
- Vid 401 från målet: hämta dess schema och ange serverns autentiseringsuppgifter, medan det sparade proxytillståndet behålls för nästa sändning.
Exemplet nämner uttryckligen ny autentisering efter en serverutmaning eller omdirigering som skäl att tillämpa proxyuppgifterna igen. Om anropet bara placeras i den första 407-grenen kan en annan återförsöksväg stå utan den förväntade inställningen.
Kontrollera varje API-resultat och håll upprepade fel begränsade. Microsofts kompakta exempel spårar föregående status, medan en produktionsretrypolicy också bör känna igen en upprepad växlande sekvens.
Om användaren anger ett ersättningskonto efter ett fel, uppdatera de värden som den sändningsvägen använder. WinHttpSetCredentials är begärandebunden; det är inte ett processomfattande lösenordslager vars innehåll ersätts för alla framtida begäranden.