使用https.request报connect ETIMEDOUT错误,https.get却正常?
为什么 https.request 超时但 https.get 正常?
核心原因:端口配置错误
你在authOptions里指定了port: '8080',但看你用https.get时的URL是https://a.random.api/a/path?option1=1——这个URL没有带端口,说明目标服务用的是HTTPS默认端口443,而不是8080。强行指定错误端口后,请求连不到正确的服务端口,自然会触发超时(ETIMEDOUT)。
修正方法很简单:要么删掉port字段(让Node.js自动使用HTTPS默认端口443),要么把port改成443(建议用数字类型,比如port: 443,字符串虽能识别但数字更规范)。
修正后的authOptions示例:
let authOptions = { hostname: 'a.random.api', // 移除port字段,或修改为port: 443 path: '/a/path?option1=1', method: 'GET' }
其他可能的次要原因(端口修正后仍有问题时排查)
- 缺少HTTPS专属配置:如果目标服务有特殊TLS证书要求,
https.get会自动使用默认TLS配置,而https.request可能需要在options里显式添加rejectUnauthorized、ca等参数(不过你用get正常,大概率不是这个问题)。 - 参数类型不规范:比如
port用了字符串'8080',虽然Node.js会尝试转换,但统一用数字类型能避免潜在解析问题。
内容的提问来源于stack exchange,提问作者Duc Khanh
相关产品推荐
相关产品推荐

