让你的node、express服务器支持https

让你的node、express服务器支持https

http与https

  • HTTP: 超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。

  • HTTPS:(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

  • HTTPS和HTTP的区别

https协议需要到ca申请证书,一般免费证书很少,需要交费。
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

申请证书

上面说到https需要得到ca申请证书,当然我们可以使用自签证,例如openSLL,当然也有免费发放证书的,这里我们向sslforfree申请免费证书

申请的流程这里稍微要注意一点的是域名验证当中的证书路径,具体流程参考使用教学

  • 1.在主页直接输入域名
    avatar

  • 2。域名验证,这里我们选择Manual Verification
    avatar

  • 3.下载下图中的两个文件,将这两个文件放置到服务器的静态路径的跟目录,
    avatar
    例如:我的服务器系统结构如下,而且在index文件当中定义了静态路径为public/pages,因此我们需要在这里进行操作,即在pages文件夹下面新建文件.well-known,然后在.well-known文件夹下面新建文件夹acme-challenge,最后将之前下载的两个验证文件放入到acme-challenge文件夹中;
    avatar

  • 4.当验证通过,打包下载给出的3个文件,如下:
    avatar
  • 5.将下载下来的3个文件上传的服务器,这里我放置在服务器根目录新建的key文件夹

修改启动文件

之前的启动文件是基于express编写的,大致如下:

const express = require('express');
const fs = require('fs');
const path = require('path');


const app = express();

app.use(express.static('public'));

app.use(express.static(path.resolve(__dirname, 'public/pages')));

const router_home = require('./routers/index.js');
app.use('/', router_home);

app.get('*', function(req, res){
    res.sendFile(path.resolve(__dirname, 'public/pages/404.html'), {
        title: 'No Found'
    })
});
app.listen(80);

添加https模块支持https

const express = require('express');
const fs = require('fs');
const path = require('path');

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

const app = express();

app.use(express.static('public'));

app.use(express.static(path.resolve(__dirname, 'public/pages')));

const router_home = require('./routers/index.js');
app.use('/', router_home);

app.get('*', function(req, res){
    res.sendFile(path.resolve(__dirname, 'public/pages/404.html'), {
        title: 'No Found'
    })
});
// app.listen(80);

var options = {
  ca: fs.readFileSync('key/ca_bundle.crt'),
  key: fs.readFileSync('key/private.key'),
  cert: fs.readFileSync('key/certificate.crt')
};


var httpServer = http.createServer(app);
var httpsServer = https.createServer(options, app);

httpServer.listen(80, function() {
    console.log('HTTP Server is running on: http://localhost:%s', 80);
});
httpsServer.listen(443, function() {
    console.log('HTTPS Server is running on: https://localhost:%s', 443);
});

总结

最后打开网页查看,完美支持

  • http访问

avatar

  • https访问

avatar

### 如何在 UniApp 中集成优广告投放与变现 #### 1. 准备工作 为了能够在 UniApp 项目中成功集成并使用优进行广告投放和变现,开发者需先完成必要的准备工作。确保已拥有腾讯广告平台账号,并已完成实名认证以及创建相应的广告位。 #### 2. 修改 `manifest.json` 文件中的配置 对于 uni-app 项目的云端打包配置,在 `manifest.json` 文件内找到 `"app-plus"` 节点下的 `"distribute"` 字段[^1]。在此处添加或修改相关内容以适应优 SDK 的接入需求: ```json { ... "app-plus": { ... "distribute": { "ad": { "appid": "您的应用ID", "secretid": "您的密钥" } }, ... } } ``` 请注意替换上述模板里的占位符为实际获取到的应用 ID 和密钥信息。 #### 3. 安装依赖插件 通过 HBuilderX 或命令行工具安装官方提供的优插件来简化开发流程。具体操作如下所示: ```bash npm install @tencent/youlianghui-plugin --save ``` 此步骤会自动下载最新版本的优插件并将之加入至当前工程之中。 #### 4. 初始化 SDK 实例 在页面初始化阶段调用相应方法完成 SDK 的实例化过程。通常建议放置于全局文件如 main.js 内部执行一次即可满足大部分场景的需求: ```javascript import youLiangHui from &#39;@tencent/youlianghui-plugin&#39;; // 应用于整个应用程序生命周期内的单次初始化逻辑 export default function initYouLiangHui() { const appKey = &#39;您申请得到的应用 Key&#39;; try { youLiangHui.init({ appId: appKey, debugMode: true, // 开发调试模式开启与否,默认关闭状态 success(res) { console.log(&#39;SDK initialized successfully&#39;, res); }, fail(err) { console.error(&#39;Failed to initialize SDK:&#39;, err); } }); // 进一步设置其他参数... } catch (error) { console.warn(`Error occurred during initialization:\n${error.message}`); } } initYouLiangHui(); ``` 这段代码展示了如何利用 npm 下载下来的模块来进行 SDK 的初步设定,同时提供了简单的错误处理机制以便更好地跟踪可能出现的问题。 #### 5. 加载展示广告组件 最后按照业务逻辑编写具体的广告加载显示函数,这里给出 Banner 类型横幅广告的一个例子作为参考实现方式之一: ```html <template> <div id="banner-container"></div> </template> <script setup lang="ts"> import { ref, onMounted } from &#39;vue&#39;; import youLiangHui from &#39;@tencent/youlianghui-plugin&#39;; const bannerContainerRef = ref(null); onMounted(() => { loadBannerAd(); }); function loadBannerAd() { let adUnitId = &#39;指定位置上的唯一标识&#39;; // 替换成自己的广告单元编号 new youLiangHui.BannerAd({ selector: &#39;#banner-container&#39;, adUnitId, styles: { width: 300, height: 250 }, onLoad() { console.info(&#39;Banner Ad loaded&#39;); }, onError(errorCode, errorMessage) { console.error(`Banner Ad error ${errorCode}: ${errorMessage}`); } }).show().then((res) => { console.debug(&#39;Show result:&#39;, res); }).catch(console.error); } </script> ``` 以上就是关于怎样把优集成进 UniApp 工程里边去的一系列指导说明。希望这些资料能够帮助读者顺利地开展后续的工作!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hustchenshu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值