nest项目
1.根目录下创建https的文件夹
放入购买的域名的公钥和私钥的文件
2.在main.ts中对协议的公钥和私钥的文件读写
1.引入文件读写需要用到path(文件的路径)和fs
注意:import fs from 'fs'(如果这样子引入的话会报错访问不到方法)
import * as fs from 'fs' (这样子引入可以保证fs访问方法的时候可以正常调用,需要直接访问export下的方法就可以了)
import * as path from 'path'
2.创建一个对象来读取公钥和私钥
const dir = process.cwd() // 拿到当前的文件的路径
const httpsOptions = {
key(私钥):path.resolve(dir,'./文件的路径')
cert(公钥):path.resolve(dir,'./文件的路径')
}
3.引入httpsOptions
const app = await NestFactory.create(AppModule,{cors:true,httpsOptions});
注意:这样子写基本上是可以的了,
但是因为在开发环境的时候,浏览器访问网址的时候是http协议的,
会进行对https 的一个拦截,这样子就无法访问到后端协议的https,
所以下面是解决的方法
1.生产环境下访问https
const httpsApp = await NestFactory.create(AppModule,{cors:true,httpsOptions});
await httpsApp.listen(process.env.PORT ?? 4000);
2.开发环境的时候就访问http
const httpsApp = await NestFactory.create(AppModule,{cors:true});
await httpsApp.listen(process.env.PORT ?? 3000);
3.前端代码访问接口的设置
3.1 .env.development文件(开发环境)的基础路径改为
VITE_GLOB_API_URL = http://localhost:3000
3.2 .env.production文件(生产环境)的基础路径改为
VITE_GLOB_API_URL = http://localhost:4000
这样子的话就大功告成了!!!
生产环境下就访问的是https的后端协议!!!
开发环境下访问的就是http的后端协议!!!