Với một proxy HTTP cung cấp xác thực Basic, proxyAuthenticator của OkHttp có thể trả về một yêu cầu mang thông tin xác thực. Trả về null sau khi một lần thử cấp quyền đã bị từ chối, thay vì gửi lại cùng câu trả lời:

.proxyAuthenticator { _, response ->
    if (response.request.header("Proxy-Authorization") != null) {
        null
    } else {
        response.request.newBuilder()
            .header("Proxy-Authorization",
                    Credentials.basic(proxyUser, proxyPassword))
            .build()
    }
}

Bản phác này dùng giá trị tài khoản từ cấu hình bí mật của ứng dụng. Lớp bảo vệ cho phép lần thử đầu tiên và dừng lần lặp lại. Nó triển khai Basic, không phải mọi lược đồ mà proxy có thể công bố; hãy xem xét thách thức trước khi chọn câu trả lời đó.

Nếu kết quả cuối cùng vẫn là 407, hãy so sánh proxy đã chọn, lược đồ được công bố và danh tính tài khoản đã ghi lại. Mật khẩu bị từ chối, phương thức không được hỗ trợ và dạng tên người dùng sai cần những chỉnh sửa khác nhau. Giữ các quan sát đó và trạng thái cuối cùng trong chẩn đoán đã biên tập.

CONNECT có một ngữ cảnh gọi lại khác: OkHttp ghi lại một thách thức xác thực proxy phủ đầu tổng hợp trước khi mở đường hầm. Xử lý ngữ cảnh đó theo API thay vì cho rằng mọi lần gọi lại là phản hồi đích thông thường.

authenticator riêng biệt dùng cho xác thực máy chủ đích. Giữ thông tin xác thực của nó tách khỏi đăng nhập proxy; một bộ chặn chung đặt mật khẩu proxy trên mọi yêu cầu gửi đi có thể gửi nó trong phạm vi sai.

Các báo cáo lịch sử cũng mô tả lỗi triển khai, bao gồm việc xử lý thân phản hồi proxy bị từ chối. Ghi lại phiên bản OkHttp và trao đổi cuối cùng trước khi quy một lỗi hiện tại cho báo cáo cũ. Quyết định thử lại vẫn nên dừng một lần thử thông tin xác thực không đổi mà không có câu trả lời mới hữu ích.

Bài viết liên quan