2013-07-29 21 views
25

Tôi không chắc liệu phương pháp tính thời lượng nội dung hiện tại của tôi có chính xác hay không. Các hàm ý của việc sử dụng string.length() để tính toán độ dài nội dung là gì. Việc đặt bộ ký tự thành utf-8 có nghĩa là bất cứ điều gì khi sử dụng node.js không?Phương pháp chính xác để tính toán tiêu đề Độ dài nội dung trong node.js

payload = JSON.stringify(payload); 

response.header('content-type', application/json; charset=utf-8); 
response.header('content-length', payload.length); 

response.end(payload); 
+0

Xem câu trả lời này cho câu hỏi của tôi: http://stackoverflow.com/a/17526143/1301058 –

Trả lời

46

Tiêu đề nội dung Độ dài phải là số lượng octet trong nội dung phản hồi. payload.length đề cập đến độ dài chuỗi ký tự. Một số ký tự UTF-8 chứa nhiều byte. Cách tốt hơn là sử dụng Buffer.byteLength(string, [encoding]) từ http://nodejs.org/api/buffer.html. Đó là một phương thức lớp, do đó bạn không phải tạo bất kỳ thể hiện Buffer nào.

+0

Điều này đã khắc phục được sự cố đối với tôi khi chiều dài nội dung được tính toán qua responseBody.length có sự khác biệt 1 so với nội dung- chiều dài tiêu đề như được đưa ra trong phản ứng. – Greggg