Cando WinHTTP alterna entre 407 e 401
Conserve o estado de autenticación do proxy escollido e volva aplicalo antes de reintentar, xestionando á parte o desafío do destino.
Unha solicitude WinHTTP autentícase no proxy, recibe o 401 dun sitio web e logo obtén outro 407 no seguinte envío. O proxy e o sitio web teñen estados de autenticación separados, e o camiño de reenvío debe conservar ambos.
O exemplo nativo de autenticación WinHTTP de Microsoft garda o esquema de proxy elixido nunha variable e volve aplicar a conta de proxy antes de cada WinHttpSendRequest unha vez seleccionado ese esquema.
- Envíe a solicitude e inspeccione a resposta.
- Ante un 407, consulte os esquemas ofrecidos e lembre o esquema de proxy elixido.
- Antes de reenviar, chame a WinHttpSetCredentials para WINHTTP_AUTH_TARGET_PROXY con ese esquema e esa conta.
- Ante un 401 do destino, obteña o seu esquema e estabeleza as súas credenciais de servidor conservando o estado de proxy lembrado para o seguinte envío.
O exemplo sinala especificamente a reautenticación tras un desafío do servidor ou unha redirección como motivo para volver aplicar as credenciais do proxy. Colocar a chamada só na primeira rama do 407 pode deixar outro camiño de reintento sen a configuración agardada.
Comprobe cada resultado da API e manteña limitados os fallos repetidos. O exemplo compacto de Microsoft segue o estado anterior, mentres que unha política de reintentos de produción tamén debería recoñecer unha secuencia alternante repetida.
Se o usuario fornece unha conta de substitución tras un fallo, actualice os valores que usa ese camiño de reenvío. WinHttpSetCredentials ten alcance de solicitude; non é un almacén de contrasinais de todo o proceso cuxo contido se substitúa para todas as solicitudes futuras.