Cuando WinHTTP alterna entre 407 y 401
Conserve el estado de autenticación del proxy elegido y vuelva a aplicarlo antes de reintentar, gestionando aparte el desafío del destino.
Una solicitud WinHTTP se autentica en el proxy, recibe el 401 de un sitio web y luego obtiene otro 407 en su siguiente envío. El proxy y el sitio web tienen estados de autenticación separados, y la ruta de reenvío debe conservar ambos.
El ejemplo nativo de autenticación WinHTTP de Microsoft guarda el esquema de proxy elegido en una variable y vuelve a aplicar la cuenta de proxy antes de cada WinHttpSendRequest una vez seleccionado ese esquema.
- Envíe la solicitud e inspeccione la respuesta.
- Ante un 407, consulte los esquemas ofrecidos y recuerde el esquema de proxy elegido.
- Antes de reenviar, llame a WinHttpSetCredentials para WINHTTP_AUTH_TARGET_PROXY con ese esquema y esa cuenta.
- Ante un 401 del destino, obtenga su esquema y establezca sus credenciales de servidor conservando el estado de proxy recordado para el siguiente envío.
El ejemplo señala específicamente la reautenticación tras un desafío del servidor o una redirección como motivo para volver a aplicar las credenciales del proxy. Colocar la llamada solo en la primera rama del 407 puede dejar otra ruta de reintento sin la configuración esperada.
Compruebe cada resultado de la API y mantenga acotados los fallos repetidos. El ejemplo compacto de Microsoft sigue el estado anterior, mientras que una política de reintentos de producción también debería reconocer una secuencia alternante repetida.
Si el usuario proporciona una cuenta de reemplazo tras un fallo, actualice los valores que usa esa ruta de reenvío. WinHttpSetCredentials tiene alcance de solicitud; no es un almacén de contraseñas de todo el proceso cuyo contenido se sustituya para todas las solicitudes futuras.