Node.js和https证书错误处理

时间:2017-02-16 21:47:38

标签: javascript node.js https error-handling

简而言之:

我正在构建使用 https (http的安全版本)发出请求的节点应用。每当我错过配置我的请求选项时,我都会遇到此错误:

  

Node.js主机名/ IP与证书的altnames

不匹配

很棒......除了整个请求代码都包含有效的try..catch(其工作正常......已经检查过)。代码基本上是这样的:

try
{
    https.request(options, (response) =>
    {
       // no way I making it so far this that error

    }).end();
}
catch(ex)
{
   // for some reason.. I'm not able to get here either
}

我打算做的只是在我的try..catch

中处理该错误

在阅读了一些帖子后,我了解到这种行为主要是因为tls模块自动处理请求并因此发出此错误 - 这是一个很好的信息,但它并没有真正帮助我处理异常。

其他人建议使用此选项:

rejectUnauthorized: false // BEWARE: security hazard!

但我宁愿不......所以......我想我的问题是:

  1. 使用try..catch块处理错误应该在这里工作......正确吗?
  2. 如果不是 - 这种行为是否在节点中按设计进行?
  3. 我可以用其他任何方式包装代码来处理这个错误吗?
  4. 只是要清楚 - 我没有使用任何第三方库(所以没有人可以责备)

    任何形式的帮助将不胜感激

    由于

1 个答案:

答案 0 :(得分:0)

您需要在'error'返回的请求对象上添加https.request()事件处理程序来处理此类错误。例如:

var req = https.request(options, (response) => {
  // ...
});
req.on('error', (err) => {
  console.log('request error', err);
});
req.end();

有关详细信息,请参阅this section in the node.js documentation about errors