前几天我在使用NodeJS发出HTTP请求时收到了HPE_INVALID_CONSTANT
。他们最近神秘地停止了发生,但我仍然感到困惑和好奇,HPE_INVALID_CONSTANT
正试图告诉我什么。
我的谷歌搜索结果有点倾向于NodeJS,所以我没有采取任何更一般地描述这意味着什么的东西。它看起来像系统级别错误,因为它全部上限。
答案 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中使用未解码的参数时,我遇到了同样的问题。
示例:
请求simple("${headers.CamelFileName}").toString()
带有空格将导致错误
http://someaddress.com?query=something
对 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',
的请求可以正常工作