כאשר WinHTTP מתחלף בין 407 ל-401
שמרו על מצב אימות הפרוקסי שנבחר והחילו אותו מחדש לפני ניסיונות חוזרים, תוך טיפול באתגר יעד נפרד.
בקשת WinHTTP מאמתת מול הפרוקסי, מקבלת 401 מהאתר, ואז מקבלת 407 נוסף בשליחה הבאה. לפרוקסי ולאתר יש מצב אימות נפרד, ונתיב השליחה החוזרת צריך לשמור על שניהם.
דוגמת האימות המקורית של WinHTTP מבית מיקרוסופט שומרת את סכימת הפרוקסי שנבחרה במשתנה ומחילה מחדש את חשבון הפרוקסי לפני כל WinHttpSendRequest לאחר בחירת הסכימה.
- שלחו את הבקשה ובדקו את התגובה.
- עבור 407, שאלו את הסכימות המוצעות וזכרו את סכימת הפרוקסי שנבחרה.
- לפני שליחה חוזרת, קראו ל-WinHttpSetCredentials עבור WINHTTP_AUTH_TARGET_PROXY עם אותה סכימה וחשבון.
- עבור 401 מהיעד, השגו את הסכימה שלו והגדירו את אישורי השרת תוך שמירת מצב הפרוקסי הזכור לשליחה הבאה.
הדוגמה מציינת במפורש אימות חוזר לאחר אתגר שרת או הפניה כסיבה להחלה מחדש של אישורי הפרוקסי. הצבת הקריאה רק בענף 407 הראשון עלולה להשאיר נתיב ניסיון חוזר אחר בלי ההגדרה הצפויה.
בדקו כל תוצאה של ה-API והגבילו כשלים חוזרים. הדוגמה המצומצמת של מיקרוסופט עוקבת אחר המצב הקודם, בעוד שמדיניות ניסיונות חוזרים בייצור צריכה לזהות גם רצף מתחלף חוזר.
אם המשתמש מספק חשבון חלופי לאחר כשל, עדכנו את הערכים שבהם משתמש נתיב השליחה החוזרת הזה. WinHttpSetCredentials מוגבל לבקשה; הוא אינו מאגר סיסמאות ברמת התהליך שתוכנו מוחלף עבור כל הבקשות העתידיות.