前言

这是个很奇妙的事情,后端在配置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插件加载环境变量,所以我只需要将这个配置配置到对应的环境变量文件中即可,如果你是其他方式,自己研究下怎么配置环境变量,这个配置是有效的。

分类: Nest.js 标签: nodessl

评论

全部评论 1

  1. hhzpflymrh
    hhzpflymrh
    Google Chrome Windows 10
    博主太厉害了!

目录