简而言之:
我正在构建使用 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!
但我宁愿不......所以......我想我的问题是:
try..catch
块处理错误应该在这里工作......正确吗?只是要清楚 - 我没有使用任何第三方库(所以没有人可以责备)
任何形式的帮助将不胜感激
由于
答案 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。