IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Node: 本地使用 HTTPS 协议 -> 正文阅读

[网络协议]Node: 本地使用 HTTPS 协议

Node: 本地使用 HTTPS 协议

完整代码示例

https://github.com/superfreeeee/Blog-code/tree/main/front_end/node/node_https_server

本地开发证书生成工具 mkcert

开源工具:FiloSottile/mkcert - Github

本篇使用 MacOS 系统 + Homebrew 安装方式,其他系统或是安装方式请查阅上面链接 readme

  • 安装
brew install mkcert  # 安装工具
mkcert -install  # 添加本地 CA
  • 生成证书:可改成自己服务器启动所使用的域名,会生成在当前命令行所在目录下
mkcert localhost

注意:切记不要把生成的 key 与 cert (.pem文件)分享到非本地主机上,会产生网站访问攻击的风险

基于 https 模块创建 https 服务器

首先我们先构建一个简单的 npm 项目(本篇使用 pnpm),并建立下列文件

  • 安装依赖:本篇直接使用 Node 内置的 https 模块,所以只需要安装开发用的 nodemon,以及下一小节所用到的 express 即可
pnpm i -D nodemon
pnpm i express
  • server.js

最后就是创建一个最小型的服务器即可

const https = require('https');
const fs = require('fs');

const options = {
  key: fs.readFileSync('./localhost-key.pem'),
  cert: fs.readFileSync('./localhost.pem'),
};

https
  .createServer(options, (req, res) => {
    res.write(fs.readFileSync('./index.html'));
    res.end();
  })
  .listen(3000, () => {
    console.log(`Server listen at https://localhost:${3000}`);
  });

最后访问页面成功说明配置正确(可以看到访问网址已经从原来的 http://localhost 变成 https://localhost 就算成功了)

使用 express 创建 https 服务器

原来使用 express 我们会这样写

const express = express()
const app = express()

// routers ...

app.listen(PORT)

如果使用 generator 或是进行过其他配置可能知道可以改成作为 http 模块的中间件如下

const express = express()
const app = express()

// routers ...

http.createServer(app).listen(PORT)

那其实改成 https 就非常简单了,直接把 http 改成使用 https 模块就可以了

  • server2.js
const https = require('https');
const fs = require('fs');
const express = require('express');
const path = require('path');

const options = {
  key: fs.readFileSync('./localhost-key.pem'),
  cert: fs.readFileSync('./localhost.pem'),
};

const app = express();

app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, '/index.html'));
});

https.createServer(options, app).listen(3000, () => {
  console.log(`Server listen at https://localhost:${3000}`);
});

参考连接

TitleLink
如何使用 HTTPS 进行本地开发https://web.dev/how-to-use-local-https/
FiloSottile/mkcert - Githubhttps://github.com/FiloSottile/mkcert
Rendering HTML Pages as an HTTP Server Response Using Node.jshttps://www.section.io/engineering-education/rendering-html-pages-as-a-http-server-response-using-node-js/
Enabling HTTPS on express.js - stackoverflowhttps://stackoverflow.com/questions/11744975/enabling-https-on-express-js
How To Deliver HTML Files with Expresshttps://www.digitalocean.com/community/tutorials/use-expressjs-to-deliver-html-files
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 01:21:54  更:2022-09-30 01:21:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:34:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码