Node后端发送请求如何关闭SSL验证
前言
这是个很奇妙的事情,后端在配置SSL证书的时候出现了一些问题,导致在mac系统上可以正常https访问,但是在其他系统就不行了,因为ssl证书校验不通过,导致请求直接 500错误。
本来让后端重新配个正确的证书就行了,但是为了赶时间测试,我这边也得做一个处理,就是虽然请求的是https的api,但是必须关闭ssl验证。
这就很奇妙了,从来没有干过,为此写个文章,方便以后查询。
教程
axios请求配置
axios请求它有两个配置属性,分辨对应http和https,我们只需要从node的模块http和https中引入Agent
,然后new出它的实例,同时传入关闭ssl验证的属性即可。
import { Agent as HttpsAgent } from "https";
import { Agent as HttpAgent } from "http";
import axios from "axios";
const instance = axios.create({
httpAgent: new HttpAgent({
rejectUnauthorized: false // 忽略ssl证书验证
}),
httpsAgent: new HttpAgent({
rejectUnauthorized: false // 忽略ssl证书验证
}),
})
这样就行了,但是又感觉有点麻烦,因为有时候可能请求不是通过axios发出的。
全局配置
更省事的办法就是全局配置,通过环境变量实现:
# 不检验SSL证书
NODE_TLS_REJECT_UNAUTHORIZED=0
如果值为0就是不验证ssl证书了, 如果为1就是默认值,验证ssl证书。
配置这个属性就可以很方便实现,不管关心使用的是什么请求库了。
我用的是Nestjs作为后端框架,配和@nestjs/config
插件加载环境变量,所以我只需要将这个配置配置到对应的环境变量文件中即可,如果你是其他方式,自己研究下怎么配置环境变量,这个配置是有效的。
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
全部评论 1
hhzpflymrh
Google Chrome Windows 10