NodeJS的HTTPS模块get方法是否可以同时发起HTTP与HTTPS请求?
关于Node.js HTTPS模块请求能力的疑问解答
你的假设完全错误,具体原因如下:
- 前提的逻辑推导不成立:HTTPS模块确实在内部复用了HTTP模块的HTTP报文解析、请求生命周期管理等通用逻辑,但它的定位是专门处理TLS/SSL加密的HTTPS请求的独立模块,不会因为底层依赖HTTP模块就获得HTTP请求的发起能力。
- 实际运行表现验证:使用
https.get()发起HTTP请求时会直接报错:该方法默认走443端口,且会自动发起TLS握手流程,普通HTTP服务无法响应TLS握手,会直接中断连接,请求无法正常完成。 - 原生Node.js中两类请求的发起方式是完全分离的:普通HTTP请求需要用
http模块的http.get()方法发起,HTTPS请求才用https.get()发起。如果你需要同时兼容两种协议的请求,可以自行做协议判断后调用对应模块的方法,也可以使用上层封装的第三方请求库。
补充说明:如果需要在不手动判断协议的前提下发起请求,也可以使用Node.js v18后内置的全局
fetch方法,它原生支持同时发起HTTP和HTTPS请求,不需要手动区分模块。
内容的提问来源于stack exchange,提问作者Sleepyhead.
相关产品推荐
相关产品推荐

