为什么node.js将“0”追加到我的POST请求中?

考虑以下非常简单的node.js脚本:

http = require('http') options = { host:'localhost', port:8000, method:'POST' } req = http.request(options) req.end() 

当我告诉netcat监听8000端口然后执行脚本时,netcat会产生以下内容:

 POST / HTTP/1.1 Host: localhost:8000 Connection: close Transfer-Encoding: chunked 0 

什么是尾随零? 请注意,这不是netcat引入的工件。

这是使用分块编码,你可以看到标题。 基本上,它发送一个字节块的长度为文本,然后是该块。 在你的情况下,它发送一个零长度块。

这是标准http / 1.1的一部分,请参阅http://en.wikipedia.org/wiki/Chunked_transfer_encoding