WinHTTP užklausa autentifikuojasi tarpiniame serveryje, gauna svetainės 401, o kitą kartą siųsdama gauna dar vieną 407. Tarpinis serveris ir svetainė turi atskiras autentifikavimo būsenas, o pakartotinio siuntimo kelias turi išsaugoti abi.

Microsoft originalus WinHTTP autentifikavimo pavyzdys pasirinktą tarpinio serverio schemą laiko kintamajame ir prieš kiekvieną WinHttpSendRequest iš naujo pritaiko tarpinio serverio paskyrą, kai schema jau pasirinkta.

  1. Nusiųskite užklausą ir patikrinkite atsakymą.
  2. Jei 407, pasiteiraukite siūlomų schemų ir įsiminkite pasirinktą tarpinio serverio schemą.
  3. Prieš siųsdami iš naujo, iškvieskite WinHttpSetCredentials, skirtą WINHTTP_AUTH_TARGET_PROXY, su ta schema ir paskyra.
  4. Jei paskirties 401, gaukite jos schemą ir nustatykite serverio prisijungimo duomenis, išsaugodami įsimintą tarpinio serverio būseną kitam siuntimui.

Pavyzdys aiškiai nurodo pakartotinę autentifikaciją po serverio iššūkio ar peradresavimo kaip priežastį iš naujo pritaikyti tarpinio serverio prisijungimo duomenis. Jei iškvietimas dedamas tik į pirmąją 407 šaką, kitas pakartojimo kelias gali likti be laukiamo paruošimo.

Tikrinkite kiekvieną API rezultatą ir ribokite pasikartojančias klaidas. Glaustas Microsoft pavyzdys seka ankstesnę būseną, o produkcinė pakartojimų politika taip pat turėtų atpažinti pasikartojančią kintamą seką.

Jei po klaidos vartotojas pateikia pakaitinę paskyrą, atnaujinkite reikšmes, kurias naudoja tas pakartotinio siuntimo kelias. WinHttpSetCredentials taikoma užklausai; tai ne viso proceso slaptažodžių saugykla, kurios turinys būtų pakeistas visoms būsimoms užklausoms.

Susiję straipsniai