http版块的 addTrailers 怎么用??
发布于 2年前 作者 lifesohard 713 次浏览

如题

3 回复

这个主要是和

Transfer-Encoding: chunked
Trailer: XXXXX

这个header有关,根据http1.1协议,当response的Transfer-Encoding为chunked时,允许在消息体后面附加其它的Header, 这个附加的Header就叫Trailers。

我们知道一般的http请求回应时,先是发送Headers(消息头), 再是发送body(消息体)。 但是有些情况下,消息头需要与消息体有关联,比如需要在header里附上消息体的Hash签名, 但是消息体并不总是预先就存在的,在动态产生消息体的情况下,如果在消息体产生完后再签好名,发送Headers和Body, 性能肯定会受影响。

比较好的做法是,Server获得请求后,开始发送可以发送的Headers, 同时设置Transfer-Encoding: chunked, Trailer: XXXX。 然后对动态产生的消息体一个chunk,一个chunk的发,发完以后,再附加上Hash头。

附个代码:

response.writeHead(200, { 'Transfer-Encoding': 'chunked',
                          'Trailer': 'Content-MD5' });
response.write(fileData);
response.addTrailers({'Content-MD5': "7895bf4b8828b55ceaf47747b4bca667"});
response.end();

对http 不懂。。。 虽然说的很详细 但是 还是有点晕。。

回到顶部