Um pedido WinHTTP autentica-se no proxy, recebe o 401 de um site e depois obtém outro 407 no envio seguinte. O proxy e o site têm estados de autenticação separados, e o caminho de reenvio precisa de manter ambos.

O exemplo nativo de autenticação WinHTTP da Microsoft guarda o esquema de proxy escolhido numa variável e reaplica a conta de proxy antes de cada WinHttpSendRequest depois de esse esquema ser selecionado.

  1. Envie o pedido e inspecione a resposta.
  2. Perante um 407, consulte os esquemas oferecidos e memorize o esquema de proxy escolhido.
  3. Antes de reenviar, chame WinHttpSetCredentials para WINHTTP_AUTH_TARGET_PROXY com esse esquema e conta.
  4. Perante um 401 do destino, obtenha o respetivo esquema e defina as credenciais do servidor, mantendo o estado de proxy memorizado para o envio seguinte.

O exemplo refere especificamente a reautenticação após um desafio do servidor ou um redirecionamento como motivo para reaplicar as credenciais do proxy. Colocar a chamada apenas no primeiro ramo 407 pode deixar outro caminho de nova tentativa sem a configuração esperada.

Verifique cada resultado da API e mantenha as falhas repetidas limitadas. O exemplo compacto da Microsoft acompanha o estado anterior, enquanto uma política de novas tentativas em produção também deve reconhecer uma sequência alternada repetida.

Se o utilizador fornecer uma conta de substituição após uma falha, atualize os valores usados por esse caminho de reenvio. WinHttpSetCredentials tem âmbito de pedido; não é um armazém de palavras-passe de todo o processo cujo conteúdo seja substituído para todos os pedidos futuros.

Artigos relacionados