O cerere WinHTTP se autentifică la proxy, primește 401 de la un site și apoi primește încă un 407 la următoarea trimitere. Proxy-ul și site-ul au stări de autentificare separate, iar calea de retrimitere trebuie să le păstreze pe ambele.

Exemplul nativ de autentificare WinHTTP de la Microsoft păstrează schema de proxy aleasă într-o variabilă și reaplică contul de proxy înainte de fiecare WinHttpSendRequest după ce acea schemă a fost selectată.

  1. Trimiteți cererea și inspectați răspunsul.
  2. Pentru un 407, interogați schemele oferite și rețineți schema de proxy aleasă.
  3. Înainte de retrimitere, apelați WinHttpSetCredentials pentru WINHTTP_AUTH_TARGET_PROXY cu acea schemă și acel cont.
  4. Pentru un 401 de la destinație, obțineți schema acesteia și setați credențialele serverului, păstrând starea de proxy memorată pentru următoarea trimitere.

Exemplul menționează în mod specific reautentificarea după o provocare a serverului sau o redirecționare ca motiv pentru reaplicarea credențialelor proxy. Plasarea apelului doar în prima ramură 407 poate lăsa o altă cale de reîncercare fără configurarea așteptată.

Verificați fiecare rezultat API și limitați eșecurile repetate. Exemplul compact al Microsoft urmărește starea anterioară, iar o politică de reîncercare din producție ar trebui să recunoască și o secvență alternantă repetată.

Dacă utilizatorul furnizează un cont de înlocuire după un eșec, actualizați valorile folosite de acea cale de retrimitere. WinHttpSetCredentials are domeniu de aplicare cererea; nu este un depozit de parole la nivel de proces al cărui conținut să fie înlocuit pentru toate cererile viitoare.

Articole similare