前言
这是个很奇妙的事情,后端在配置SSL证书的时候出现了一些问题,导致在mac系统上可以正常https访问,但是在其他系统就不行了,因为ssl证书校验不通过,导致请求直接 500错误。
本来让后端重新配个正确的证书就行了,但是为了赶时间测试,我这边也得做一个处理,就是虽然请求的是https的api,但是必须关闭ssl验证。
这就很奇妙了,从来没有干过,为此写个文章,方便以后查询。
教程
axios请求配置
axios请求它有两个配置属性,分辨对应http和https,我们只需要从node的模块http和https中引入Agent
,然后new出它的实例,同时传入关闭ssl验证的属性即可。
javascript
复制代码
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
插件加载环境变量,所以我只需要将这个配置配置到对应的环境变量文件中即可,如果你是其他方式,自己研究下怎么配置环境变量,这个配置是有效的。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)