Những giá trị này không phải là cách viết cạnh tranh của một chế độ:

Connection: Upgrade
Connection: keep-alive, Upgrade

Giá trị thứ hai liệt kê hai tùy chọn kết nối. HTTP định nghĩa Connection là danh sách ngăn cách bằng dấu phẩy, với tên tùy chọn không phân biệt chữ hoa chữ thường. Đoạn mã so sánh toàn bộ giá trị với chuỗi Upgrade chính xác sẽ bỏ sót một danh sách hợp lệ có chứa tùy chọn đó.

Khi chuyển tiếp thông thường, một trung gian HTTP phân tích trường đến, loại bỏ các trường được nêu tên bởi các tùy chọn của nó, rồi loại bỏ chính Connection hoặc thay nó bằng các tùy chọn điều khiển của trung gian cho kết nối tiếp theo.

Chỉ loại bỏ một trường Keep-Alive được mã hóa cứng là chưa đủ. Một thông điệp có thể nêu tên một trường khác dành riêng cho kết nối trong danh sách, và trường đó không được rò rỉ vào việc chuyển tiếp thông thường.

Việc hỗ trợ nâng cấp giao thức đòi hỏi xử lý có chủ đích cả hai kết nối và giao thức mới. Sao chép mù quáng các tiêu đề Upgrade đến không phải là triển khai của việc bàn giao đó.

Khi một trình duyệt hoạt động còn trình duyệt khác thất bại, hãy so sánh giá trị trường thực tế ở cả hai phía của trung gian. Sự khác biệt giữa một token và danh sách hai token có thể phơi bày lỗi bộ phân tích mà không cần trình duyệt bắt chước định dạng chính xác của trình duyệt khác.

Điều này liên quan đến các thông điệp HTTP mà proxy phân tích. Một đường hầm HTTPS CONNECT thông thường không để lộ trường Connection của trang web đã mã hóa cho proxy đó.

Bài viết liên quan