پاسخ به چالش پروکسی 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 دستگیره درخواست نمیشود، همانگونه که رسیدن موفق به نقطه پایانی احراز هویت را کامل نمیکند.