express 本地https服务 接口、静态文件,并支持跨域
var express = require('express');
var app = express();
//设置跨域访问
app.all('*', function (req, res, next) {res.header('Access-Control-Allow-Origin', '*');res.header('Access-Control-Allow-Credentials', true);res.header('Access-Control-Allow-Headers', 'Content-Type,Content-Length, Authorization, Accept,X-Requested-With')res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS');//res.header('Content-Type', 'application/json;charset=utf-8');next()
});// 当路由url匹配为'/'时,执行function,返回Hello World
app.get('/', function (req, res) {res.send('Hello World');
});app.use('/publicStaticPath',express.static("./dist"));
// 访问 https://localhost:6789/publicStaticPath/文件名 ,可以获取相应静态文件app.listen(6788,()=>console.log('http://localhost:6788'));// HTTPS
var fs = require('fs');
//同步读取密钥和签名证书
const options = {key:fs.readFileSync('./cert/cert-key.pem'),cert:fs.readFileSync('./cert/cert.pem')
}
// 创建https server的时候 传入服务器私钥和服务器证书
// 引入https模块
var https = require('https');
var httpsServer = https.createServer(options,app);
//https监听8080端口
httpsServer.listen(6789,()=>console.log('https://localhost:6789'));
签名证书 生成
[签名证书 生成 ](https://blog.csdn.net/weixin_45062275/article/details/136829974#:~:text=mkcert%E7%94%9F%E6%88%90%E5%AE%89%E5%85%A8%E7%9A%84%E8%AF%81%E4%B9%A6>
mkcert localhost 127.0.0.1 ::1
生成的
localhost+2.pem文件
-----BEGIN CERTIFICATE-----
MIIEdzCCAt+gAwIBAgIRAMwv7/JautF2m21gssHZn1kwDQYJKoZIhvcNAQELBQAw
gZUxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTE1MDMGA1UECwwsMjAx
OTA2MTctMTU1MDEyXEFkbWluQDIwMTkwNjE3LTE1NTAxMiAoS2VhbikxPDA6BgNV
BAMMM21rY2VydCAyMDE5MDYxNy0xNTUwMTJcQWRtaW5AMjAxOTA2MTctMTU1MDEy
IChLZWFuKTAeFw0yNDA1MDcwNzIwMTJaFw0yNjA4MDcwNzIwMTJaMGAxJzAlBgNV
BAoTHm1rY2VydCBkZXZlbG9wbWVudCBjZXJ0aWZpY2F0ZTE1MDMGA1UECwwsMjAx
OTA2MTctMTU1MDEyXEFkbWluQDIwMTkwNjE3LTE1NTAxMiAoS2VhbikwggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8RMxIbg8CU73MnMT/d0IKejTb++rB
zUiUPES6hczdpMOwv8W9gHtxkw3tDrzG10q+skD/0+RzC4x+x9xcBM3pSprpqjhl
Ro05Qmcz0wZMxCVqYEGcU1hfW/Dpb03TRSW2GJ0Czvs5jtwIFzV14fZxE/oaYHd1
Sj7L1v8WCD+HRDkg2xrAtTwxtg58QimfurBJ55qlLpOArbJx1cxvEsXwKXUy8x51
6fIYaleVqe5JCl7cSyo6mKAzyVjM0pbOg8Z7zGJY+avS7jwk23j/WrfIAvBy7SC1
AA8OrLp9cPaNVfmBc1tjk2ZlJKdFbDiUw+wJOAdPoQbl5MYZJZg8OwBtAgMBAAGj
djB0MA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATAfBgNVHSME
GDAWgBR2rglco/qYq9AAV6LaptsYbud2iDAsBgNVHREEJTAjgglsb2NhbGhvc3SH
BH8AAAGHEAAAAAAAAAAAAAAAAAAAAAEwDQYJKoZIhvcNAQELBQADggGBAE4aEo5Q
yREwvlQWDwJjiXbUIfUJ9dYb7KFVPDI61OONaXPviDkUzreLP0NzM52tmEg605gR
C+pjHi7ZPcj1+ZAa4VPHNBQ+bKe1nF/NIcU3NZKRomfWz/pcbx5jDB/lWFvcp9Xw
g2SS4G1b1ihqZvql82B74HD6us+IEg9lmlOelio86BMcEX6/pst2UYxqvqU34EjK
2TN/E+Aw8o7WAYwdEtQ9aQ507/1aw83iWgXVHIHr8W9wBbghbwXBSmfvWP1Y3S5p
Cub1AxOkgdB8OSgM4NUJbX7yesMR/YDk+kRpYl0DbMetUN3tM1ar4ChktSltzeQa
GmYJTH+fRiJLfoUqjqGM6q4aYlkhwCCYwXn7vo8GNmN8wKYyXCKNEhfN4rX1jI72
nSOsmN12HREmNsHtCBDOyt6c+RbA/yOqJlrLyTA3PS6wWLRnzfA3HNUP1cwe2aAh
79b8H6EkHLL6/7/182KfviA5312Abn5NYqJYlORhWhRKppWKZ1tNORy21g==
-----END CERTIFICATE-----
localhost+2-key.pem 文件
-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC8RMxIbg8CU73M
nMT/d0IKejTb++rBzUiUPES6hczdpMOwv8W9gHtxkw3tDrzG10q+skD/0+RzC4x+
x9xcBM3pSprpqjhlRo05Qmcz0wZMxCVqYEGcU1hfW/Dpb03TRSW2GJ0Czvs5jtwI
FzV14fZxE/oaYHd1Sj7L1v8WCD+HRDkg2xrAtTwxtg58QimfurBJ55qlLpOArbJx
1cxvEsXwKXUy8x516fIYaleVqe5JCl7cSyo6mKAzyVjM0pbOg8Z7zGJY+avS7jwk
23j/WrfIAvBy7SC1AA8OrLp9cPaNVfmBc1tjk2ZlJKdFbDiUw+wJOAdPoQbl5MYZ
JZg8OwBtAgMBAAECggEAS4d+PQCKXPCjkFbEYYjCodltI2PpRl7I409ac0oCalkT
ePE2r1PAMkxApf3nlg4BGogAs6GaYN0dPC+KJBB5W0Jm658yiM7JEVOme5AJUvrN
1+NN7x0wsvD7sWrJ2hw/iNJPCzVmbCz38Pb+p5BDghH1oGdbBV8H2lcidwBQHD9+
SV+xulFQB2IMDOORHdL0PeYD95qkmY0+VkNwyyZrmQP3FeU+942t7kUjedJ2JjbD
azJV9aieKbiXdKociQhait8m6EPerJEtEmYrWKYW9LVxo3Ik3Je3l9T0mCel5zZM
IB8Mt6huYnYe4s4wH2s+TA/Yd7H5XEEt5Zy/nHITsQKBgQDWiRnfaaIwidjttU0T
/2WyQJ4pMLyA8546y2ezBo1ccuzkd8/YLg/sxHBLtsGoB4YrTqZaSKlTvOuITxwP
EMEZ0CD/bNpmM8snxNYKzzEsRwbfADHgtj9bUDs8N1s81ERpEGYeQUnagSPXDW31
HcUyN89Tylj9PcZmUn+v1oizIwKBgQDgqA3tdw80swV7nMgAxqfGI4PseSv3K1Ls
zuEAsMafM/EzlxHHYgSTXnZtP7YSXyV3Q26qFqMKstt3VCQdskMqXFtBMyKD0Om7
vEFuWv1/3s34g2co81/gp4l7B8RYP8j5G6/9s5aQa1b9i1Rs2Z2TJnLmd9IiXdJU
BpLZx8m/LwKBgBjnoZFF+gYYeo5d1azUoUGoLrQpbDisD1pT8p3dzNtGnCmJnx9B
eafKxh6EAMc42GJ+puEkPkPyUoVoaaF2GHSerLX6NQBYUuUy/IYUt2ikdi+9Hg0w
GvrGvZmn83eETMzFkpVAjwpGo5p7fKBP7Gx//hmEDACaA0YtnZUUGppxAoGADc7G
bF3w9VA7egl80W9kSG1OYm5gIWTsR9m/Qoea7ZYHsSAL27FOjrAznytXSXHHn7jp
SFLz2mh7zK3DOoAGWMgsY6l86ZUhiIRdkSbOhdlv12JcKMwsjGY/sOwdST9CXu0w
t+sdyeqPAi5aFgaaBL1MOpYKuEoD714oEHKTF8kCgYBsy0dm2/L5ZLLCekDO36Hb
yE7o14VFQDNgIFQ3CIXa2iXxZQAceuTlIWJHrXv0LS8+Z/Q7Q7PqtfcwQDtSRSRz
orzJbMcI1THQeZEQWrBfnvi1G2E63lOBJLoKFx/aO1KjoH3DiyA+KITYoRvZepGo
RrhB/qD/eVa9uKDHvtoj8g==
-----END PRIVATE KEY-----相关文章:
express 本地https服务 接口、静态文件,并支持跨域
var express require(express); var app express(); //设置跨域访问 app.all(*, function (req, res, next) {res.header(Access-Control-Allow-Origin, *);res.header(Access-Control-Allow-Credentials, true);res.header(Access-Control-Allow-Headers, Content-Type,Cont…...
从零手写实现 tomcat-08-tomcat 如何与 springboot 集成?
创作缘由 平时使用 tomcat 等 web 服务器不可谓不多,但是一直一知半解。 于是想着自己实现一个简单版本,学习一下 tomcat 的精髓。 系列教程 从零手写实现 apache Tomcat-01-入门介绍 从零手写实现 apache Tomcat-02-web.xml 入门详细介绍 从零手写…...
yarn 安装以及报错处理
前一种报错是由于没有安装yarn导致的,使用以下命令即可安装: npm install -g yarn 如果成功安装,将显示Yarn的版本号。 yarn --version 第二种报错是因为系统上的执行策略限制导致的。执行策略是一种安全功能,用于控制在计算机…...
31万奖金池等你挑战!IJCAI 2024 第九届“信也科技杯”全球AI算法大赛正式开赛!聚焦AI尖端赛题!
文章目录 ⭐️ 赛事概况⭐️ 赛事奖励⭐️ 赛事日程速览⭐️ 报名通道与赛事交流群⭐️ 关于 “信也科技杯”⭐️ 关于信也科技 ⭐️ 赛事概况 随着语音合成技术的不断进步,合成语音与真实语音之间的界限变得模糊,这不仅对数据安全构成威胁,也对科技伦理提出了新的要求。 第九…...
线性表—栈的实现
目录 栈的概念及结构 栈的实现 创建栈 栈的初始化 入栈 出栈 取出栈顶数据 判断栈是否为空 有效数据个数 栈的销毁 全代码 stack.h stack.c 应用 题目 示例 解题思路 代码实现 栈的概念及结构 栈是一种特殊的线性表,其只允许在固定的一端进行插入…...
react+antd --- 日期选择器,动态生成日期表格表头
先看一下效果---有当前月的日期 技术: 1: react 2:antd-UI库 -- table 3:moment--时间处理库 代码效果: import { Button, DatePicker, Table } from antd; import { useEffect, useState } from react; import momen…...
webgl入门-js与着色器间的数据传输
js与着色器间的数据传输 前言 课堂目标 使用js向着色器传递数据获取鼠标在canvas 中的webgl 坐标系位置 知识点 attribute 变量gl.vertextAttribute3f() 的同族函数鼠标在canvas 中的css 位置转webgl 坐标位uniform 变量gl.uniform4f() 的同族函数 第一章 用js控制一个点…...
springmvc异常处理
springmvc异常处理 spring中有三种方式可以优雅的处理异常 使用ExceptionHandler 使用HandlerExceptionResolver 使用ControllerAdviceExceptionHandler 使用ExceptionHandler 该方式只在指定的Controller有效,不会对其他的Controller产生影响 ControllerRequestMap…...
可拖动、连线的React画布组件有哪些? 官网分别是什么?
下面是一些常用的可拖动、连线的React画布组件以及它们的官方网站: react-dagre-d3:这是一个基于React和D3.js的可拖动、连线的图形编辑器组件。它使用DAG(有向无环图)布局算法,支持节点拖拽、连线、缩放等功能。官网&…...
专访 Staynex 创始人 Yuen Wong:酒店行业的变革者
整理:Tia,Techub News 传统酒店业其实已经很中心化了,几大巨头 OTA 平台几乎已经完成对行业的垄断,而酒店商家也不得不受制于平台的规则制度,向平台支付高比例的费用。Staynex 看到了其中的机会,并想利用区…...
最新版Ceph( Reef版本)块存储简单对接k8s(上集)
当前ceph 你的ceph集群上执行 1.创建名为k8s-rbd 的存储池 ceph osd pool create k8s-rbd 64 642.初始化 rbd pool init k8s-rbd3 创建k8s访问块设备的认证用户 ceph auth get-or-create client.kubernetes mon profile rbd osd profile rbd poolk8s-rbd部署 ceph-rbd-csi c…...
稳态大面积光伏组件IV测试太阳光模拟器
稳态大面积光伏组件IV测试太阳光模拟器是太阳能光伏组件质量检测和评价的重要步骤之一。本文将介绍光伏组件IV测试的原理及标准板选择。 I. 光伏组件IV测试原理 光伏组件IV测试即电流电压特性测试,是评估光伏组件性能的重要手段。其测量的主要参数为组件的电流和电…...
编写HTTP协议代理的一些知识(源码)
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 早期上网经常需要使用代理服务…...
LabVIEW天然气压缩因子软件设计
LabVIEW天然气压缩因子软件设计 项目背景 天然气作为一种重要的能源,其压缩因子的准确计算对于流量的计量和输送过程的优化具有关键意义。传统的计算方法不仅步骤繁琐,而且难以满足现场快速响应的需求。因此,开发一款既能保证计算精度又便于…...
GCP谷歌云有什么数据库类型,该怎么选择
GCP谷歌云提供的数据库类型主要包括: 关系型数据库:这类数据库适用于结构化数据,通常用于数据结构不经常发生变化的场合。在GCP中,关系型数据库选项包括Cloud SQL和Cloud Spanner。Cloud SQL提供托管的MySQL、PostgreSQL和SQL Se…...
项目经理之路:裁员与内卷下的生存策略
作为一名项目经理,身处这个充满挑战与机遇的行业中,今年所面临的裁员潮和内卷化趋势无疑给我的工作带来了前所未有的压力。然而,正是这些压力和挑战,让我们更加深刻地思考了在这个快速变化的时代中,我们项目经理应该如…...
MWM触摸屏工控机维修TEM-EV0 EN00-Z312yy-xx
触摸屏维修是一个比较复杂的过程,并且其中会涉及到各个部件的问题,这对于操作人员来说,关键在于是否可以找到问题所在。维修过程中建议先检查各接线接口是否出现松动,然后检查串口及中断号是否有冲突,若有冲突…...
idm下载到99.99%不动了 idm突然不下载了 idm下载到最后没速度咋办 IDM下载后没网了是怎么回事
idm能够帮助我们下载不同类型的网页视频,并且基于多线程下载技术的助力下使其下载速度比原来提升数倍以上,因此成为了许多朋友下载的小助手。但也有朋友反映idm下载网页视频超时连接不上,idm下载网页视频突然停止,究竟这些情况我们…...
设计模式-07 设计模式-观察者模式(Observer Pattern)
设计模式-07 设计模式-观察者模式(Observer Pattern) 1.定义 观察者模式是一种软件设计模式,它定义了一种一对多的依赖关系,其中一个对象(称为“主题”)维护了一个依赖对象的列表(称为“观察者”…...
戒烟网站|基于SSM+vue的戒烟网站系统的设计与实现(源码+数据库+文档)
戒烟网站 目录 基于SSM+vue的戒烟网站系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1网站功能模块 2管理员功能模块 3用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
结构化文件管理实战:实现目录自动创建与归类
手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题,进而引发后续程序异常。使用工具进行标准化操作,能有效降低出错概率。 需要快速整理大量文件的技术用户而言,这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB,…...
鸿蒙Navigation路由导航-基本使用介绍
1. Navigation介绍 Navigation组件是路由导航的根视图容器,一般作为Page页面的根容器使用,其内部默认包含了标题栏、内容区和工具栏,其中内容区默认首页显示导航内容(Navigation的子组件)或非首页显示(Nav…...
java+webstock
maven依赖 <dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.3.5</version></dependency><dependency><groupId>org.apache.tomcat.websocket</groupId&…...
