node搭建https服务器后 浏览器请求报错,postman请求没有问题

web页面是https的,但是后台还是http的node服务没升级,所以导致前端请求http的ip端口浏览器会报错。

然后按照步骤升级node服务到https后

https://itnext.io/node-expres...
node代码没有问题,启动运行ok

const express = require("express");
const app = express();
const https = require('https')
const http = require('http')
const fs = require('fs')
const bodyParser = require('body-parser')
const jwt= require('jsonwebtoken');
const expressJwt = require('express-jwt');


//根据项目的路径导入生成的证书文件
const privateKey = fs.readFileSync('/etc/letsencrypt/live/xxxx.xxx/privkey.pem', 'utf8');
const certificate = fs.readFileSync('/etc/letsencrypt/live/xxxx.xxx/cert.pem', 'utf8');
const ca = fs.readFileSync('/etc/letsencrypt/live/xxxx.xxx/chain.pem', 'utf8');

const credentials = {
    key: privateKey,
    cert: certificate,
    ca: ca
};
var httpServer = http.createServer(app);
var httpsServer = https.createServer(credentials, app);
 
//可以分别设置http、https的访问端口号
var PORT = 3001;
var SSLPORT = 3002;
 
//创建http服务器
httpServer.listen(PORT, function() {
    console.log('HTTP Server is running on: http://localhost:%s', PORT);
});
 
//创建https服务器
httpsServer.listen(SSLPORT, function() {
    console.log('HTTPS Server is running on: https://localhost:%s', SSLPORT);
});

但是 前端更改成https://172.XXX.XXX.XXX:3002浏览器会报错,但是postman没有问题

clipboard.png

clipboard.png

然后 如果在前端页面把 ip改成域名https://www.xxx.com:3002 就没问题 费解。。。

chrome的security如下

clipboard.png

阅读 4.3k
3 个回答

因为你生成https里指定的是域名而不是IP地址,浏览器有一个验证证书的过程。

证书签的是域名

https证书对应的是域名而不是ip

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题