Amikor a WinHTTP 407 és 401 között váltogat
Őrizze meg a kiválasztott proxyhitelesítési állapotot, és az újrapróbálkozások előtt alkalmazza újra, miközben a cél külön kihívását is kezeli.
Egy WinHTTP-kérés hitelesít a proxynál, megkapja egy webhely 401-esét, majd a következő küldésnél újabb 407-est kap. A proxynak és a webhelynek külön hitelesítési állapota van, és az újraküldési útvonalnak mindkettőt meg kell tartania.
A Microsoft natív WinHTTP-hitelesítési példája a kiválasztott proxy-sémát változóban tartja, és a séma kiválasztása után minden WinHttpSendRequest előtt újra alkalmazza a proxyfiókot.
- Küldje el a kérést, és vizsgálja meg a választ.
- 407 esetén kérdezze le a felkínált sémákat, és jegyezze meg a kiválasztott proxy-sémát.
- Újraküldés előtt hívja meg a WinHttpSetCredentials függvényt a WINHTTP_AUTH_TARGET_PROXY értékhez azzal a sémával és fiókkal.
- A cél 401-esénél szerezze be annak sémáját, és állítsa be a kiszolgáló hitelesítő adatait, miközben a megjegyzett proxyállapot a következő küldésre megmarad.
A példa kifejezetten a kiszolgálói kihívás vagy átirányítás utáni újrahitelesítést nevezi meg a proxy hitelesítő adatai újraalkalmazásának okaként. Ha a hívás csak az első 407-es ágban szerepel, egy másik újrapróbálkozási útvonal a várt beállítás nélkül maradhat.
Ellenőrizze minden API-eredményt, és tartsa korlátozottan az ismétlődő hibákat. A Microsoft tömör példája az előző állapotot követi, a termelési újrapróbálkozási szabályzatnak pedig az ismétlődő váltakozó sorozatot is fel kell ismernie.
Ha a felhasználó hiba után helyettesítő fiókot ad meg, frissítse azokat az értékeket, amelyeket ez az újraküldési útvonal használ. A WinHttpSetCredentials kéréshatókörű; nem folyamatszintű jelszótároló, amelynek tartalma minden jövőbeli kéréshez lecserélődne.