Ένα αίτημα WinHTTP πιστοποιείται στον διακομιστή μεσολάβησης, λαμβάνει το 401 ενός ιστότοπου και έπειτα παίρνει άλλο ένα 407 στην επόμενη αποστολή. Ο διακομιστής μεσολάβησης και ο ιστότοπος έχουν ξεχωριστή κατάσταση ελέγχου ταυτότητας και η διαδρομή επαναποστολής πρέπει να διατηρεί και τις δύο.

Το εγγενές παράδειγμα ελέγχου ταυτότητας WinHTTP της Microsoft κρατά το επιλεγμένο σχήμα διακομιστή μεσολάβησης σε μια μεταβλητή και εφαρμόζει ξανά τον λογαριασμό πριν από κάθε WinHttpSendRequest, αφού επιλεγεί αυτό το σχήμα.

  1. Στείλτε το αίτημα και εξετάστε την απόκριση.
  2. Για 407, ρωτήστε τα προσφερόμενα σχήματα και θυμηθείτε το επιλεγμένο σχήμα.
  3. Πριν την επαναποστολή, καλέστε το WinHttpSetCredentials για το WINHTTP_AUTH_TARGET_PROXY με αυτό το σχήμα και τον λογαριασμό.
  4. Για 401 του προορισμού, πάρτε το σχήμα του και ορίστε τα διαπιστευτήρια του διακομιστή, κρατώντας την αποθηκευμένη κατάσταση για την επόμενη αποστολή.

Το παράδειγμα σημειώνει ρητά τον εκ νέου έλεγχο ταυτότητας μετά από πρόκληση διακομιστή ή ανακατεύθυνση ως λόγο επανεφαρμογής των διαπιστευτηρίων. Αν η κλήση μπει μόνο στον πρώτο κλάδο 407, μια άλλη διαδρομή επανάληψης μένει χωρίς την αναμενόμενη προετοιμασία.

Ελέγχετε κάθε αποτέλεσμα του API και κρατήστε τις επαναλαμβανόμενες αποτυχίες φραγμένες. Το συμπαγές παράδειγμα της Microsoft παρακολουθεί την προηγούμενη κατάσταση, ενώ μια πολιτική επαναλήψεων παραγωγής πρέπει να αναγνωρίζει και μια επαναλαμβανόμενη εναλλασσόμενη ακολουθία.

Αν ο χρήστης δώσει λογαριασμό αντικατάστασης μετά από αποτυχία, ενημερώστε τις τιμές που χρησιμοποιεί αυτή η διαδρομή. Το WinHttpSetCredentials έχει εμβέλεια αιτήματος· δεν είναι αποθήκη κωδικών σε επίπεδο διεργασίας της οποίας το περιεχόμενο αντικαθίσταται για όλα τα μελλοντικά αιτήματα.

Σχετικά άρθρα