Node.jsv12.0 https请求报错

1.错误信息

write EPROTO 140737037194176:error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol:

2.问题解析

node.js https模块在v12+中默认使用的TLS1.3,而服务器的TLS不是,如图是TLS1.0。导致报TLS错误

JavonHuang:~ JavonHuang$ curl -iv https://****/mock/52/login
*   Trying 0.0.0.0...
* TCP_NODELAY set
* Connected to test.shuangwutech.com (119.23.207.30) port 443 (#0)
* TLS 1.0 connection using TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
* Server certificate: test.shuangwutech.com
* Server certificate: TrustAsia TLS RSA CA
* Server certificate: DigiCert Global Root CA
> GET /mock/52/login HTTP/1.1
> Host: test.shuangwutech.com
> User-Agent: curl/7.54.0
> Accept: */*
> 
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Server: openresty/1.13.6.2
Server: openresty/1.13.6.2
< Date: Sat, 16 May 2020 05:45:50 GMT
Date: Sat, 16 May 2020 05:45:50 GMT
< Content-Type: application/json; charset=utf-8
Content-Type: application/json; charset=utf-8
< Content-Length: 269
Content-Length: 269
< Connection: keep-alive
Connection: keep-alive
< Access-Control-Allow-Origin: undefined
Access-Control-Allow-Origin: undefined
< Access-Control-Allow-Credentials: true
Access-Control-Allow-Credentials: true

< 
* Connection #0 to host test.shuangwutech.com left intact
{"retcode":"000000","retmsg":"invoke successfully","version":4,"access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpcCI6IjEwLjg2LjM3LjIxIiwiZXhwIjoxNTg5Mjc1MDk0LCJ1c2VySWQiOiJBUElfVEVTVCIsInVzZXJuYW1lIjoiQVBJ5rWL6K-VIn0.3M-F5HIM4JKq5vcaBSR5LFKs31gNden3DYRlUpXRqog"}JavonHuang:~ JavonHuang$ 


3.解决方案

添加secureProtocol属性设置,将其TLS版本指定为服务器的版本

const options = {
      hostname: '*****',
      port: 443,
      path: '/mock/52/login',
      method: 'GET',
      secureProtocol:"TLSv1_method",
      headers:{
        'Content-Type': 'Application/json',
      }
    };
    
    const req = https.request(options, (res:any) => {
      res.on('data', (d:any) => {
        resolve(d);
      });
    });
    
    req.on('error', (e:any) => {
      reject(e);
    });
    req.end();

 

提供的引用内容中未涉及Node.js v20.19.0的相关信息,下面是从常规角度获取的关于Node.js v20.19.0的信息: ### 下载 可以从Node.js官方网站(https://nodejs.org/ )下载Node.js v20.19.0版本。在官网首页通常会提供长期支持(LTS)版本和最新版本的下载链接,选择适合自己操作系统(如Windows、macOS、Linux等)的安装包进行下载。 ### 使用指南 - **安装**:下载完成后,运行安装程序,按照提示完成安装。安装完成后,在命令行中输入 `node -v` 和 `npm -v` 分别检查Node.js和npm(Node.js包管理器)是否安装成功。 - **创建项目**:打开命令行,创建一个新的项目目录,进入该目录后,使用 `npm init -y` 初始化一个新的Node.js项目,这将生成一个 `package.json` 文件,用于管理项目的依赖和脚本。 - **安装依赖**:使用 `npm install` 命令来安装项目所需的依赖包。例如,如果要安装Express框架,可以使用 `npm install express`。 - **编写代码**:使用文本编辑器(如Visual Studio Code)创建一个JavaScript文件,编写Node.js代码。以下是一个简单的Express应用示例: ```javascript const express = require('express'); const app = express(); const port = 3000; app.get('/', (req, res) => { res.send('Hello, World!'); }); app.listen(port, () => { console.log(`Server is running on port ${port}`); }); ``` - **运行项目**:在命令行中使用 `node 文件名.js` 来运行编写的Node.js代码。例如,对于上述示例代码,使用 `node app.js` 来启动服务器。 ### 特性介绍 - **性能优化**:Node.js v20.19.0可能在性能方面进行了进一步的优化,包括事件循环、内存管理等方面,以提高应用程序的响应速度和吞吐量。 - **安全性增强**:会不断更新安全补丁,修复已知的安全漏洞,保障应用程序的安全性。 - **新的API支持**:可能引入了一些新的API,为开发者提供更多的功能和便利。例如,对新的文件系统操作、网络协议等的支持。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值