http server response 客户端报出ERR_INVALID_CHUNKED_ENCODING
发布于 11 年前 作者 LEOxiaoD 13542 次预览 最后一次回复是 11 年前 来自 问答
我先这样写
fs.createReadStream(p).pipe(res);
没有问题,但是
var readable = fs.createReadStream(p); readable.on("data", function(data){ res.write(data); }); readable.on("end", function(){ // write response head res.writeHead(200, { "Content-Type": "text/html", "Transfer-Encoding": "chunked" }); res.end(); }); readable.on("error", function(){ res.statusCode = 500; res.end("500 Internal Error"); });
这样的话客户端就报出ERR_INVALID _CHUNKED_ENCODING 怎么回事呢?
8 回复
加了个buffer 问题没有了 谁能解释下是为什么吗 谢啦
var readstream = fs.createReadStream(filepath,{encoding:‘binary’}); res.write(data,‘binary’); res.end()
@MiguelValentine 这样写好像也会 ERR_INVALID _CHUNKED_ENCODING
ON(data)会被多次触发。这么写
@MiguelValentine 恩 在第一条回复里我自己解决了这个问题 但是我想知道为什么要加个buffer,然后在end的时候一起传给浏览器
因为那个不能执行的代码是先发送响应的主体再发送的响应头,这个是不正确的,应该要先发送响应头再发送响应主体。
@nodejser 谢谢 受教了
@LEOxiaoD 太客气了。