尝试使用https模块进行POST时出现Node.js v8.11.1 EPROTO错误

时间:2018-11-16 17:41:04

标签: node.js post https

我有一个在AWS的Node 8.11.1上运行的系统。有一个功能可以将日志写入另一台服务器。此函数接受一个记录的请求对象。

我的问题在实际的POST尝试期间出现,给我以下错误:

错误:编写EPROTO 139746875082624:错误:140770FC:SSL例程:SSL23_GET_SERVER_HELLO:未知协议:../ deps / openssl / openssl / ssl / s23 / clnt.c:827:

我的代码看不到任何问题。
为什么会发生错误,该如何解决?

这是函数内部的代码:

const https = require('https');    
try
{
   const postData = "New log finished " + JSON.stringify(request, null, 2);

   const options =
   {
      hostname: LOG_DOMAIN,
      port: LOG_PORT,
      path: '/',
      method: 'POST'
   };

   const req = https.request(options);
   req.on('error', (e) =>
   {
      console.error("ERROR writing logs: " + e);
   });
   req.write(postData);
   req.end();
}
catch (e)
{
   console.log(e);
}

LOG_DOMAIN和LOG_PORT是传递给函数的变量。

1 个答案:

答案 0 :(得分:0)

经过进一步研究,看来Aravind Voggu(请参阅注释)是正确的:错误来自尝试将HTTPS用于仅允许HTTP的服务器。

当尝试保护与不安全对象的连接时,OpenSSL消失。

要使我的代码正常工作,唯一需要做的更改就是从所使用位置的“ https”中删除“ s”。

ids = input().split()
N = len(ids)