node服务器支持https请求

node服务器支持https请求

水文一篇

问题

前段时间给自己的域名接入了https,但是前端向后端发起请求的时候报了这么一个错误

net::ERR_SSL_PROTOCOL_ERROR

意思是https的请求不能向http服务器发起,所以,我们要把node服务加上ssl

操作

const express = require("express");
const app = express();
const https = require('https');
const fs = require('fs');

// node接入证书
const privateKey = fs.readFileSync('./ssl/privkey.pem', 'utf8');
const certificate = fs.readFileSync('./ssl/cert.pem', 'utf8');
const ca = fs.readFileSync('./ssl/chain.pem', 'utf8');
const credentials = {
    key: privateKey,
    cert: certificate,
    ca: ca
};

// 跨域
app.use(require("cors")());

//处理post请求,解析json数据 (中间件)
const bodyParser = require("body-parser");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

// jsonwebtoken生成token
app.set("secret", "vuereactnodeblog");

// 引入mongoose
require("./mongodb/db")(app);

// 引入路由
import router from "./routes/index.js";
router(app);

// 引入微医图书超时扣分器(每天23:59:50秒检测是否逾期,如果逾期设置逾期状态并且)
require("./utils/outtime")();

const httpsServer = https.createServer(credentials, app);


// http监听3000端口
httpsServer.listen(3000, () => {
  console.log("App Listening on port 3000");
});

const privateKey = fs.readFileSync('./ssl/privkey.pem', 'utf8');
const certificate = fs.readFileSync('./ssl/cert.pem', 'utf8');
const ca = fs.readFileSync('./ssl/chain.pem', 'utf8');

这三个文件的地址在我配置的 letsencypt 文件夹里面,看文章配置的兄弟们注意如果配置的ssl不是用 letsencypt 或者 用的阿里云或腾讯云的免费ssl证书,不要参考我这个方法配置!(应该是用key与pem双文件配置)

配置完了,我们就可以登录进去了
在这里插入图片描述
但是右上方显示了不安全,这是我的域名直接请求了 https://47.95.234.230:3000导致的,虽说https请求http的问题(禁止混合)解决了,但是这个证书只针对与域名 codeting.top有效,所以,请求 https://47.95.234.230:3000是不安全的。

这个时候我们只需要将 47.95.234.230:3000(3000这个端口或者这个服务映射到域名上就可以了),大家可以通过nginx配置,我这儿比较懒,直接宝塔面板映射,方便。
在这里插入图片描述
改完了,修改前端的请求IP为域名,就可以了。
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值