如何在HTTP响应中为缓冲区设置正确的长度?
我正在使用Express.js。我无法让这个工作:
res.set('Content-Length', myBuffer.length);
注意,我需要手动设置它,因为我需要在HEAD请求中发送它。如果我只发送HEAD响应而不手动设置GET请求体大小的Content-Length,那么Content-Length设置为2比14000的小值。
答案 0 :(得分:0)
你的代码应该可以完成这项工作,但是你没有给我们任何关于如何获得你的myBuffer的线索。
以下是一个有效的代码示例,前提是有一个文本文件h:\ Temp \ text.txt
var http = require("http");
var fs = require("fs");
http.createServer(function (request, response) {
fs.readFile('H:\\Temp\text.txt', function(data, err) {
if (err) {
response.writeHead(404, {
"Content-Type": "text/plain"
});
response.write(err);
response.end();
} else {
response.writeHead(200, {
"Content-Type": "text/plain"
"Content-Length": data.length
}
response.write(data);
response.end();
}
});
}).listen(80);
它起作用,因为数据是一个正确的Buffer对象。 如果数据不是Buffer对象,而只是一个字符串或其他任何东西,它就无法工作。 (例如,UTF-8字符串的字符数可以少于字节数)。
答案 1 :(得分:0)
尝试“buffer.body.length”
@Post("posts/add")
async addPost(
@Body() body
) {
...
res.set({
'Content-Length': buffer.body.length,
});
...
}