Quando WinHTTP alterna tra 407 e 401
Conservate lo stato di autenticazione del proxy scelto e riapplicatelo prima dei nuovi tentativi, gestendo separatamente la richiesta di autenticazione della destinazione.
Una richiesta WinHTTP si autentica al proxy, riceve il 401 di un sito web e poi ottiene un altro 407 all'invio successivo. Proxy e sito web hanno stati di autenticazione separati e il percorso di reinvio deve conservare entrambi.
L'esempio nativo di autenticazione WinHTTP di Microsoft mantiene lo schema proxy scelto in una variabile e riapplica l'account proxy prima di ogni WinHttpSendRequest dopo che quello schema è stato selezionato.
- Inviate la richiesta e ispezionate la risposta.
- Per un 407, interrogate gli schemi offerti e ricordate lo schema proxy scelto.
- Prima di reinviare, chiamate WinHttpSetCredentials per WINHTTP_AUTH_TARGET_PROXY con quello schema e quell'account.
- Per un 401 della destinazione, ottenetene lo schema e impostate le credenziali del server conservando lo stato proxy memorizzato per l'invio successivo.
L'esempio segnala specificamente la riautenticazione dopo una richiesta del server o un reindirizzamento come motivo per riapplicare le credenziali del proxy. Collocare la chiamata solo nel primo ramo 407 può lasciare un altro percorso di tentativo senza la configurazione attesa.
Controllate ogni risultato API e mantenete limitati gli errori ripetuti. L'esempio compatto di Microsoft tiene traccia dello stato precedente, mentre una politica di tentativi in produzione dovrebbe riconoscere anche una sequenza alternata ripetuta.
Se l'utente fornisce un account sostitutivo dopo un errore, aggiornate i valori usati da quel percorso di reinvio. WinHttpSetCredentials ha ambito di richiesta; non è un archivio di password a livello di processo il cui contenuto venga sostituito per tutte le richieste future.