Khi WinHTTP luân phiên giữa 407 và 401
Giữ trạng thái xác thực proxy đã chọn và áp dụng lại trước khi thử lại, đồng thời xử lý riêng thách thức từ đích đến.
Một yêu cầu WinHTTP xác thực với proxy, nhận 401 từ trang web, rồi nhận thêm 407 ở lần gửi tiếp theo. Proxy và trang web có trạng thái xác thực riêng, và đường gửi lại cần giữ cả hai.
Mẫu xác thực WinHTTP gốc của Microsoft lưu lược đồ proxy đã chọn trong một biến và áp dụng lại tài khoản proxy trước mỗi WinHttpSendRequest sau khi lược đồ đó được chọn.
- Gửi yêu cầu và kiểm tra phản hồi.
- Với 407, hỏi các lược đồ được cung cấp và ghi nhớ lược đồ proxy đã chọn.
- Trước khi gửi lại, gọi WinHttpSetCredentials cho WINHTTP_AUTH_TARGET_PROXY với lược đồ và tài khoản đó.
- Với 401 từ đích đến, lấy lược đồ của nó và đặt thông tin xác thực máy chủ trong khi vẫn giữ trạng thái proxy đã ghi nhớ cho lần gửi tiếp theo.
Mẫu nêu cụ thể việc xác thực lại sau thách thức của máy chủ hoặc chuyển hướng là lý do áp dụng lại thông tin xác thực proxy. Chỉ đặt lời gọi trong nhánh 407 đầu tiên có thể khiến một đường thử lại khác thiếu bước chuẩn bị mong đợi.
Kiểm tra mọi kết quả API và giới hạn số lần thất bại lặp lại. Mẫu gọn của Microsoft theo dõi trạng thái trước đó, còn chính sách thử lại trong môi trường thực tế cũng nên nhận ra chuỗi luân phiên lặp lại.
Nếu người dùng cung cấp tài khoản thay thế sau khi thất bại, hãy cập nhật các giá trị mà đường gửi lại đó sử dụng. WinHttpSetCredentials có phạm vi theo yêu cầu; đây không phải kho mật khẩu toàn tiến trình mà nội dung bị thay thế cho mọi yêu cầu trong tương lai.