微信小程序使用微信云托管添加自定义域名并转发到pexels.com
背景:我要在小程序上显示pexels.com上的图片,然后我得先把pexels.com的域名添加到小程序的request合法域名中,但是pexels.com是国外的,在国内没有备案所以添加不了。解决方案就是:用一个已经备案好的域名进行转发,转发的服务器我选择的是微信云托管,备案好的域名还需要ssl,没有的话本文会讲到如何申请一个免费的ssl证书。
因为pexels.com开放了API可以拿到图片,所以得先请求https://api.pexels.com拿到图片列表,图片的域名是images.pexels.com,两个域名都不能通过小程序后台的校验:
所以得需要有一个已备案的域名来进行转发,这样就能绕过限制了。
需要准备的物料:
1、一个在国内已经备案好的域名
2、github账号
大致流程如下:
开通微信云托管服务
基于微信云托管模板部署部署一个expressjs服务
修改服务的路由转发
1、先开通微信云托管:
进入控制台:
https://cloud.weixin.qq.com/cloudrun/console
点击新建服务,输入服务名称点击确定:
大家可以先fork一下我的代码仓库:
https://github.com/2424004764/pexels-proxy-expressjs,我把转发的代码都写好了
之后在选择方式的时候选择绑定github仓库:
如果不方便使用github仓库,也可以将仓库代码包下载下来以手动上传代码包的形式部署:
如果是github的话,提交代码以后会重新自动部署,会方便很多,而手动上传代码包的话还得重新上传再手动点击部署,比较麻烦一点。
选择好后点击发布按钮就开始部署了:
等待部署完成,一般这个步骤几分钟左右,部署好是这样的:
我们可以点击云端调试测试下服务是否可用:
如果输出了当前时间,则表明服务是好的。
expressjs服务的index.js代码如下:
const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');
const app = express();
try {
// 创建一个代理中间件,将以 /photos 开头的请求代理到目标地址
const photosProxy = createProxyMiddleware({
target: "http://images.pexels.com/photos",
changeOrigin: true, // 设置更改请求头中的 Origin
pathRewrite: {
// 将 /photos 开头的请求重写为目标地址的不同路径,保留 /photos
'^/photos': '' // 保留 /photos 部分,只替换后面的部分
},
});
// 使用代理中间件来处理以 /photos 开头的请求
app.use('/photos', photosProxy);
const photosApiProxy = createProxyMiddleware({
target: "https://api.pexels.com",
changeOrigin: true,
pathRewrite: {
'^/pexels-api': ''
}
});
// 当请求pexels-api时也转发
app.use('/pexels-api', photosApiProxy);
// 根目录路由处理函数,输出当前时间
app.get('/', (req, res) => {
const currentTime = new Date().toLocaleString(); // 获取当前时间
res.send(`Current time is: ${currentTime}`); // 返回当前时间到客户端
});
app.listen(80, () => {
console.log("启动成功");
});
} catch (error) {
console.error('Failed to start application:', error);
process.exit(1); // 退出应用并返回非零状态码
}
这样在一个域名下完成了两个域名的转发,只要通过后缀区分即可,我们先设置好自定义域名再说这么访问。
我们来到自定义域名页面,点击绑定域名:
假设aaaa.com是你已经备案好的域名,pexels-proxy是二级域名,如果你的域名有https证书的话,可以先把https证书上传,如果没有我在本文会讲到如果10分钟申请一个免费https证书。
申请免费证书,我们打开并注册一个账号:
https://www.sslchaoshi.com/
我们选择体验版证书:
选择第一个,点击查看详情:
点击购买:
选择余额支付:
因为我这里已经购买过了,所以不能再购买了:
购买后来到个人中心,这里应该就能看到订单了:
我记得好像是有验证的,有一个选项是选择dns,然后需要验证域名的cname记录,按操作完成后等几分钟就能下证了:
我们点击证书打包下载,打开解压后的目录的ALL目录:
我们再回到微信云托管的自定义域名页面:
依次上传证书和私钥,然后点击确定,之后就会得到一个cname的记录值:
可在这里检车ssl证书状态(微信官方推荐):
https://myssl.com/ssl.html
再去域名注册商处解析一个cname记录即可
访问方式:
1、如果是请求api:则最终请求url为
https://pexels-proxy.aaaa.com/pexels-api/v1/curated。这样就能绕过pexels.com未备案的限制了
2、如果是请求的图片:
我们请求api的时候返回的列表格式为:
我们只需要将图片的域名改成我们的子域名即可:
let list = []
res.photos.forEach((item, index) => {
list.push({
title: item.alt,
image: item.src.medium.replace("images.pexels.com", "pexels-proxy.aaaa.com"),
})
})
这里返回的src.original是原图,medium是小图,作为列表只用,如果点击,则显示原图,这样图片就不会失真了。
效果:
这篇文章就到这里啦!如果你对文章内容有疑问或想要深入讨论,欢迎在评论区留言,我会尽力回答。同时,如果你觉得这篇文章对你有帮助,不妨点个赞并分享给其他同学,让更多人受益。
想要了解更多相关知识,可以查看我以往的文章,其中有许多精彩内容。记得关注我,获取及时更新,我们可以一起学习、讨论技术,共同进步。
感谢你的阅读与支持,期待在未来的文章中与你再次相遇!
微信小程序使用微信云托管添加自定义域名并转发到pexels.com的更多相关文章
- 微信小程序腾讯云php后台解决方案
微信小程序腾讯云php后台解决方案 微信小程序前段需要添加必要的文件以配合后端 (1)wafer2-client-sdk sdk提供了几种接口包括登陆,获取用户openid,图片上传等 (2)conf ...
- 微信小程序开发 -- 通过云函数下载任意文件
微信小程序开发 -- 通过云函数下载任意文件 1.云开发介绍 微信小程序开发者众所周知,小程序开发拥有许多限制,当我还是一个菜鸟入门的时候,第一关就卡在了没有备案域名的HTTP请求上面,那时候云开 ...
- 微信小程序+腾讯云直播的实时音视频实战笔记
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 微信小程序(微信应用号)开发ide安装解决方法
这两天整个技术圈都炸锅了,微信小程序(微信应用号)发布内测,首批200家收到邀请,但是没受邀请的同学,也不用担心,下面介绍一下解决方法. 首先需要下载ide,昨天只需要下载0.9版本的编辑器并替换文件 ...
- 微信小程序(原名微信应用号)开发工具0.9版安装教程
微信小程序全称微信公众平台·小程序,原名微信公众平台·应用号(简称微信应用号) 声明 微信小程序开发工具类似于一个轻量级的IDE集成开发环境,目前仅开放给了少部分受微信官方邀请的人士(据说仅200个名 ...
- 微信小程序之微信登陆 —— 微信小程序教程系列(20)
简介: 微信登陆,在新建一个微信小程序Hello World项目的时候,就可以看到项目中出现了我们的微信头像,其实这个Hello World项目,就有一个简化版的微信登陆.只不过是,还没有写入到咱们自 ...
- 微信小程序(微信应用号)组件讲解[申明:来源于网络]
微信小程序(微信应用号)组件讲解[申明:来源于网络] 地址:http://www.cnblogs.com/muyixiaoguang/p/5902008.html
- 微信小程序和微信公众号的id是一个吗
首先,简单说下我遇到的问题是我们的程序调用微信小程序得到openid,然后通过openID得到用户的唯一标识,用户得以登录,然而,当我们调用微信公众号也同样的到openid,同一以用户两个不同的ope ...
- [转]微信小程序、微信公众号、H5之间相互跳转
本文转自:https://www.cnblogs.com/colorful-paopao1/p/8608609.html 转自慕课网 一.小程序和公众号 答案是:可以相互关联. 在微信公众号里可以添加 ...
- 微信小程序、微信公众号、H5之间相互跳转
转自慕课网 一.小程序和公众号 答案是:可以相互关联. 在微信公众号里可以添加小程序. 图片有点小,我把文字打出来吧: 可关联已有的小程序或快速创建小程序.已关联的小程序可被使用在自定义菜单和模版消息 ...
随机推荐
- 基于 alientek rv1126 快速启动调试那的写坑
基于 alientek rv1126 快速启动调试那的写坑 1. sdk 编制准备工作 1.1 编译配置修改 首先拿到 sdk 通过修改一下相关配置 1.1.1修改DDR 配置 cd /home/al ...
- Windows下获取设备管理器列表信息-setupAPI
背景及问题: 在与硬件打交道时,经常需要知道当前设备连接的硬件信息,以便连接正确的硬件,比如串口通讯查询连接的硬件及端口,一般手工的方式就是去设备管理器查看相应的信息,应用程序如何读取这一部分信息呢, ...
- TensorRT C# API 项目介绍:基于C#与TensorRT部署深度学习模型
TensorRT C# API 项目介绍:基于C#与TensorRT部署深度学习模型 1. 项目介绍 NVIDIA TensorRT 是一款用于高性能深度学习推理的 SDK,包括深度学习推理优化 ...
- MySQL配置和常用命令
目录 数据库配置 常用操作 项目地址:https://github.com/aijisjtu/Bot-Battle graph LR A[配置数据源] --> B[建立连接] B --> ...
- #二叉堆#JZOJ 4320 旅行
分析 有一个很重要的性质就是如果经过道路数为奇数,把两个点到根节点的路径长加起来就是两个点间的路径长(正负消掉了) 而且众所周知的是奇数+偶数=奇数 可以预处理每个点到根节点的路径长度(按照题目要求) ...
- #树链剖分,LCA#洛谷 3398 仓鼠找sugar
题目 多次询问求树上的两条路径是否有公共点 分析 有公共点当且仅当一条路径的LCA在另一条路径上, 否则一定会形成一个环,那树剖求LCA判断一下LCA是否在另一条路径上即可 代码 #include & ...
- C# sqlclient数据库事务BeginTransaction()详解
重载 重载 BeginTransaction() 开始数据库事务. BeginTransaction(IsolationLevel) 以指定的隔离级别启动数据库事务. BeginTransaction ...
- 实践指南:EdgeOne与HAI的梦幻联动
在当今快速发展的数字时代,安全和速度已成为网络服务的基石.EdgeOne,作为腾讯云提供的边缘安全加速平台,以其全球部署的节点和强大的安全防护功能,为用户提供了稳定而高效的网络体验.而HAI(Hype ...
- CentOS防火墙操作命令
CentOS防火墙操作命令 1.查看防火墙服务状态 systemctl status firewalld.service 或者查看防火墙的状态: 1 firewall-cmd --state 2.开启 ...
- mysql 重新整理——配置文件[一]
前言 对mysql 进行从新整理一下,仅做参考,如有任何不对望指出. 正文 mysql 一般分windows和linux,但是他们的运行配置其实是一样的,所以在此不做区分. 直接上一个大体的图: 我个 ...