在电子应用程序中使用axios发出请求时,HPE_INVALID_HEADER_TOKEN

时间:2019-04-26 17:38:49

标签: electron axios

我有一个电子应用程序,它使用axios发出请求。电子内的请求出现错误,代码为HPE_INVALID_HEADER_TOKEN

相同的请求代码可以在电子外部正常运行(即运行节点test.js)。我曾尝试按照其他问题的建议使用http-parser-js,但仍然存在此问题。

const axios = require("axios");

async function getter() {
try {
        const response = await axios.get(url);
        console.log(response.data);
    } catch (error) {
        console.log(error)
    }
}

getter();
{ Error: Parse Error
    at TLSSocket.socketOnData (_http_client.js:451:22)
    at TLSSocket.emit (events.js:194:13)
    at TLSSocket.EventEmitter.emit (domain.js:469:20)
    at addChunk (_stream_readable.js:296:12)
    at readableAddChunk (_stream_readable.js:277:11)
    at TLSSocket.Readable.push (_stream_readable.js:232:10)
    at TLSWrap.onStreamRead (internal/stream_base_commons.js:165:17)
  bytesParsed: 636,
  code: 'HPE_INVALID_HEADER_TOKEN',
  reason: 'Invalid header value char',
  config:
   { adapter: [Function: httpAdapter],
     transformRequest: { '0': [Function: transformRequest] },
     transformResponse: { '0': [Function: transformResponse] },
     timeout: 0,
     xsrfCookieName: 'XSRF-TOKEN',
     xsrfHeaderName: 'X-XSRF-TOKEN',
     maxContentLength: -1,
     validateStatus: [Function: validateStatus],

2 个答案:

答案 0 :(得分:0)

在使此代码生效之前,我尝试了几件事:

  1. 已删除的node_modules目录
  2. 删除了package-lock.json
  3. 已删除npm缓存

这些都没有解决问题。我终于通过删除然后重新添加请求中使用的标头使此代码正常工作。

答案 1 :(得分:0)

以防万一有人遇到类似问题,昨天我在axios中遇到了一个错误:Parse Error: Invalid header value char,当我使用邮递员在我的应用程序外部调用它时,它可以正常工作。

起初,我认为这是由于我的环境配置或node_modules软件包错误引起的。我尝试重新安装软件包,并尝试逐行删除环境配置代码,但是这些都不起作用。

最后,我花了半天的时间才发现最新版本的axios 0.19.0 不支持高版本的node!我通过简单地将节点版本降级到 10.17.0

来解决了该问题