2010-07-21 18 views
19

Có thể đặt tiêu đề có độ dài nội dung và cũng sử dụng mã hóa chuyển đoạn không? và làm như vậy giải quyết vấn đề không biết chiều dài của phản ứng ở phía khách hàng khi sử dụng chunked?Tiêu đề mã hóa và chiều dài nội dung được phân đoạn

trường hợp tôi đang nghĩ đến là khi bạn có tệp lớn để chuyển và không có vấn đề gì trong việc xác định kích thước của nó, nhưng nó quá lớn để được đệm hoàn toàn. (Nếu bạn không sử dụng chunked, sau đó toàn bộ phản ứng phải được đệm đầu tiên? Phải không?)

cảm ơn.

+3

Nếu bạn có thể đề cập đến bất kỳ tài liệu tham khảo RFC hoặc thứ gì đó tương tự, nó sẽ tuyệt vời. – p00ya00

Trả lời

22

1) Không: "Tin nhắn KHÔNG PHẢI bao gồm cả trường tiêu đề Content-Length và mã chuyển mã không nhận dạng. Nếu thông báo không bao gồm mã chuyển giao không nhận dạng, thì PHẢI bỏ qua Content-Length. " (RFC 2616, Section 4.4)

2) Và không, bạn có thể sử dụng Độ dài và luồng nội dung; giao thức không hạn chế cách triển khai của bạn hoạt động.

+0

Tôi hy vọng mã hóa chuyển chunked là một ví dụ cho dòng; bạn đã đề cập ở đây phải không? nó cũng có thể bao gồm các yêu cầu phạm vi. Tôi có đúng không? –

7

Vâng, bạn luôn có thể gửi tiêu đề cho biết kích thước của tệp. Một cái gì đó như response.addHeader("File-Size","size of the file");
Và bỏ qua tiêu đề Độ dài nội dung.

Thực hiện của khách hàng phải được tinh chỉnh để đọc giá trị này, nhưng bạn có thể đạt được cả hai thứ bạn muốn :)

+0

Các giải pháp đơn giản là tốt nhất :-) – EZDsIt

+1

Quy ước là sử dụng tiền tố 'X-' trên bất kỳ tiêu đề không chuẩn nào. Proxy HTTP cũng có thể quyết định xóa tiêu đề không phải X tiêu chuẩn của bạn. – MSalters

+0

Cảm ơn MSalters, vừa được tham chiếu đến một hướng dẫn tương tự ở nơi khác, đánh giá cao nó. – Gyan