http.get解析错误,代码:“ HPE_UNEXPECTED_CONTENT_LENGTH”

gra*_*row 3 javascript node.js

我有一个简单的节点脚本来处理家庭自动化API中的一些数据。一切正常,直到最后一次Node更新为止。现在,使用Node版本4.3.0或5.6.0,http模块给我这个错误:

{ [Error: Parse Error] bytesParsed: 193, code: 'HPE_UNEXPECTED_CONTENT_LENGTH' }
Run Code Online (Sandbox Code Playgroud)

导致错误的API调用示例,它仅返回一个数字(温度):

HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 5
Content-Type: application/json
Transfer-Encoding: chunked

21.81
Run Code Online (Sandbox Code Playgroud)

以及产生错误的代码:

const http = require("http");
const url = "http://127.0.0.1:8083/ZWaveAPI/Run/devices[11].instances[2].commandClasses[49].data[1].val.value";

http.get(url, (res) => {
    // consume response body
    res.resume();
}).on("error", (e) => {
    console.log(e);
});
Run Code Online (Sandbox Code Playgroud)

我认为该错误与CVE-2016-2216 Response Splitting Vulnerability有关,但我尝试运行那里提到的脚本--security-revert = CVE-2016-2216标志,它没有帮助。有任何想法吗?

小智 6

我发现此提交日志。问题似乎是Content-LengthTransfer-encoding: chunked标头一起存在的:

服务器同时发送Content-Length标头和Transfer-Encoding:分块标头,这违反了HTTP规范。