这个错误意味着什么:HPE_INVALID_CONSTANT?

时间:2016-01-13 14:55:42

标签: http tcp

前几天我在使用NodeJS发出HTTP请求时收到了HPE_INVALID_CONSTANT。他们最近神秘地停止了发生,但我仍然感到困惑和好奇,HPE_INVALID_CONSTANT正试图告诉我什么。

我的谷歌搜索结果有点倾向于NodeJS,所以我没有采取任何更一般地描述这意味着什么的东西。它看起来像系统级别错误,因为它全部上限。

4 个答案:

答案 0 :(得分:4)

认为这个答案很有用,但它可以帮助一些人。

我也有这个问题并且意识到NodeJS不支持HTTP 0.9,该服务器的响应不包含头文件。实际上,在NodeJS文档中显示了对1.0和1.1 http请求的支持。

在本期中,您可以多阅读here

答案 1 :(得分:2)

HPE_INVALID_CONSTANT表示Http Parse Error,无效常量表示响应格式错误。因此解析器无法解析它!

答案 2 :(得分:1)

我遇到了这个问题,因为我试图压缩太小的文件。在我的特定情况下,我正在创建一个83字节文件的读取流,然后将其输送到gzip中,最后将其输送到响应中

fs.createReadStream(file_path).pipe(gzip.createGzip()).pipe(res);

然后在请求者那边,我试图解压缩文件

stream = request({"url": "https://example.com/getFile", "timeout": 200000});

//This is where the error was getting thrown
stream.pipe(gzip.createGunzip())

似乎尝试压缩然后解压缩大小小于200字节的文件将完全破坏这一点,所以这是我遇到的一个难题。我想我的故事的寓意是不要压缩超小文件!

答案 3 :(得分:0)

在请求URL中使用未解码的参数时,我遇到了同样的问题。

示例:

  1. 请求simple("${headers.CamelFileName}").toString() 带有空格将导致错误

    http://someaddress.com?query=something
  2. Error: Parse Error at TLSSocket.socketOnData (_http_client.js:440:20) at emitOne (events.js:116:13) at TLSSocket.emit (events.js:211:7) at addChunk (_stream_readable.js:263:12) at readableAddChunk (_stream_readable.js:250:11) at TLSSocket.Readable.push (_stream_readable.js:208:10) at TLSWrap.onread (net.js:597:20) bytesParsed: 0, code: 'HPE_INVALID_CONSTANT', 的请求可以正常工作