Απάντηση σε πρόκληση διακομιστή μεσολάβησης WinHTTP στη λαβή αιτήματος
Χρησιμοποιήστε το WinHttpSetCredentials με στόχο ελέγχου ταυτότητας του διακομιστή μεσολάβησης και ένα υποστηριζόμενο προσφερόμενο σχήμα και, στη συνέχεια, επαναλάβετε σκόπιμα το αίτημα.
Αφού ένα αίτημα WinHTTP λάβει 407, χρησιμοποιήστε το WinHttpQueryAuthSchemes για να εξετάσετε τις προσφερόμενες μεθόδους και να επιλέξετε μία που υποστηρίζουν ο πελάτης και ο λογαριασμός. Ορίστε τα διαπιστευτήρια σε αυτό το αίτημα:
WinHttpSetCredentials(
requestHandle,
WINHTTP_AUTH_TARGET_PROXY,
selectedScheme,
proxyUser,
proxyPassword,
nullptr);
Το τελευταίο δεσμευμένο όρισμα πρέπει να είναι null. Ελέγξτε το λογικό αποτέλεσμα και, σε περίπτωση αποτυχίας, το GetLastError. Επιτυχία σημαίνει ότι το API δέχτηκε τη ρύθμιση, όχι ότι ο διακομιστής μεσολάβησης δέχτηκε τη σύνδεση.
Στείλτε ξανά μέσω ελεγχόμενης ροής ελέγχου ταυτότητας και εξετάστε την απάντηση. Περιορίστε τις επαναλήψεις· μια ροή σώματος αιτήματος που έχει ήδη καταναλωθεί πρέπει να μπορεί να αναπαραχθεί αν η λειτουργία επαναληφθεί. Ένα 401 του προορισμού χρησιμοποιεί το WINHTTP_AUTH_TARGET_SERVER, διαφορετικό από αυτόν τον στόχο του διακομιστή μεσολάβησης.
Αυτά τα διαπιστευτήρια ισχύουν για ένα μόνο αίτημα. Το WinHTTP δεν τα κάνει γενικό χώρο αποθήκευσης διαπιστευτηρίων για μεταγενέστερα αιτήματα. Οι επαναχρησιμοποιούμενες πιστοποιημένες συνδέσεις μπορούν να κρύψουν προσωρινά μια άλλη πρόκληση, επομένως η εφαρμογή πρέπει να εξακολουθεί να χειρίζεται μελλοντικές προκλήσεις.
Κρατήστε την επιλογή διακομιστή μεσολάβησης ξεχωριστή. Μια συμβολοσειρά διεύθυνσης που φέρει διαπιστευτήρια δεν αντικαθιστά αυτό το API λαβής αιτήματος, όπως ακριβώς η επιτυχής πρόσβαση στο τελικό σημείο δεν ολοκληρώνει τον έλεγχο ταυτότητας.