Nếu một tệp được cho là PDF hoặc bảng tính bắt đầu bằng HTTP/1.1 200 OK, trình tải xuống đã lưu một phản hồi thô thay vì tệp. Phản hồi sơ đồ này chỉ chứa bốn byte nội dung:

HTTP/1.1 200 OK
Transfer-Encoding: chunked

4
DATA
0

Tệp là DATA. Dòng trạng thái, các tiêu đề, dấu kích thước và cấu trúc kết thúc thuộc về HTTP. Xóa một số byte cố định là không an toàn vì độ dài tiêu đề thay đổi. Sao chép mọi thứ sau dòng trống đầu tiên vẫn để lại phần đóng khung đoạn, và các phản hồi thông tin có thể đến trước phản hồi cuối cùng.

Đối với tải xuống thông thường, hãy thay việc sao chép từ socket thô sang tệp bằng giao diện phần thân phản hồi của ứng dụng khách HTTP. Định cấu hình proxy của nó, xác thực trạng thái cuối cùng và truyền phát phần thân tới đầu ra tạm thời. Ứng dụng khách xử lý việc đóng khung thông điệp: phần thân giới hạn theo độ dài, theo đoạn (chunked) và giới hạn theo kết nối cần cách phân tích khác nhau.

Mã hóa nội dung là một lớp nữa. Quyết định xem bạn cần byte tệp đã giải mã hay nội dung thô được yêu cầu rõ ràng, dựa trên hành vi được ghi lại của ứng dụng khách. Byte nén không tự động là hỏng do proxy.

Nếu ứng dụng phải giữ mã ở mức socket, nó chịu trách nhiệm về tất cả các quy tắc phân tích đó cũng như việc xử lý đọc và ghi. Chỉ ghi số byte mà lần đọc thực sự trả về, không phải dung lượng bộ đệm, và xử lý ghi một phần. Nếu không, nội dung bộ đệm cũ có thể làm hỏng cả phần thân được trích xuất đúng cách.

HTTPS cần nhiều hơn việc bỏ phản hồi CONNECT: sau khi thiết lập đường hầm thành công, hãy thiết lập TLS tới đích rồi mới phân tích phản hồi HTTP bên trong. Các byte được mã hóa sau tiêu đề của proxy không phải là tệp có thể tải xuống.

Để đầu ra thất bại hoặc chưa hoàn chỉnh dưới một tên tạm thời. Chỉ công bố sau khi quá trình truyền và các kiểm tra tệp thành công; một tệp không rỗng không chứng minh tải xuống hoàn chỉnh.

Bài viết liên quan