在Node.js局域网调试https的Vue项目

时间:2024-12-05 06:56:30

需求:

        最近在测试在网页端(HTML5)调用移动设备的定位等权限功能,发现某些功能是必须保证域名在https下的否则会出现不正常现象。

解决:

1.在线生成和证书
访问:CSR文件生成工具-中国数字证书CHINASSL
        填写好之后点生成即可,我们可以下载到两个文件。
        这里我的域名是192.168.3.151,得到192.168.3.151_csr.txt192.168.3.151_key.txt这两个文件(妥善保存)。

        然后再访问:自签名免费SSL证书签发-中国数字证书CHINASSL
        把192.168.3.151_csr.txt文件里的内容粘贴到代码框里,点获取免费证书之后可以下载到一个192.168.3.151_ssl.crt文件。

2.配置Node.js
参考Node.js配置源,确保已经配置好npm了。

安装express、fs、https模块:【必须】

npm install express --save
npm install fs --save
npm install https --save

安装express模块的相关依赖(可选):

npm install body-parser --save
npm install cookie-parser --save
npm install multer --save

安装完成后可以查看express的版本号:

npm list express

3.拷贝相关文件
192.168.3.151_key.txt192.168.3.151_ssl.crt(名字可能不同,但是格式是这样的)复制到你服务器程序同级目录下,比如我的目录就这三个文件:

192.168.3.151_key.txt
192.168.3.151_ssl.crt
app.js

app.js

//导入模块
const fs = require('fs')// 文件输入输出,用来导入证书        
const https = require('https')// https服务器  
const express = require('express')// express模块导入
 
//读取证书
const privateKey = fs.readFileSync('192.168.3.151_key.txt', 'utf8')
const certificate = fs.readFileSync('192.168.3.151_ssl.crt', 'utf8')
 
// 创建 express 应用
const app = express()
// 监听 / 路径的 get 请求
app.get('/', function(req, res) {
  res.send('Hello Word!')
})
 
 
const credentials = { key: privateKey, cert: certificate }
const httpsServer = https.createServer(credentials, app)
const SSLPORT = 8080
httpsServer.listen(SSLPORT, function() {
  console.log('HTTPS 服务器已运行在: https://192.168.3.151:%s', SSLPORT)
})

 

使用Node.js运行app.js

在VSCode中新建一个终端,然后指定到当前的项目根目录,前提是这个项目已经是个完整功能的Vue项目,输入node app.js。提示运行在某个地址 说明已经成功启动https服务器。

然后在vue.config.js中加入一些代码:配置好主机端口和本地地址,https设为true

然后再新建一个终端,用于启动我们的Vue项目:

如果无报错,则会成功启动,域名变成了设置的localhost地址,端口号变成了8081,直接访问该地址,显示如下图页面类似就成功了,地址是借来的,凑合看吧。类似安全提示需点击继续访问即可。

设置信任这个证书就可以了~