微信小程序生态12—微信小程序开发设置中服务器域名和业务域名

一、前言

在小程序中有这样两个域名设置:服务器域名和业务域名

其实它这写的很清楚了:

"配置服务器域名后,可以小程序进行网络通信";

"配置业务域名后,可调用web-view组件在小程序中打开"。

但是对于初学者来说,这两个域名配置着实可以把人绕晕,尤其是业务域名那个万恶的校验文件,虽然微信官方也写了校验文件检查失败自查指引,但是没有什么作用。下面说说这两个域名怎么配置吧。

二、服务器域名

每个微信小程序需要事先设置通讯域名,小程序只可以跟指定的域名进行网络通信。包括普通 HTTPS 请求([wx.request、上传文件([wx.uploadFile、下载文件(wx.downloadFile) 和 WebSocket 通信(wx.connectSocket)。

配置流程

服务器域名请在 「小程序后台 - 开发 - 开发设置 - 服务器域名」 中进行配置,配置时需要注意:

总体来说,服务器域名理解起来不难,配置上也没有一些隐藏问题,除非域名写错,多了个空格或特殊符号啥的。

三、业务域名

1. 为什么要配置

在我们实际开发的过程中,有些场景需要从微信小程序跳转到H5页面,使用web-view组件就可以了,这相当于直接跳转到了外部链接。 但是由于网络安全问题日益严峻,很多网站在你点击了外跳都会询问是否外跳,并让你签署免责声明。 微信小程序官方为了保证外跳是安全的,就出了这么一个规定:所有外跳的链接域名都需要配置安全校验文件,如果配置不了那就不要跳。这种一刀切的方式可苦了我们这些开发者。

2. 配置文件的两种方式

(1)文件上传到域名的根目录下

这种方式主要是下载文件然后上传,需要注意的是要设置正确路由

(2)自己写一个接口返回校验文件中的字符串

由于微信这个校验文件只需要判断你返回的字符串是不是文件中的内容,所以我们可以换一个思路: 把校验的内容加到配置文件,直接通过接口返回。 这个方案我试过,是可行的,不过也踩了一些坑,这里记录一下,方便自己也方便后人。

废话不多说,直接上代码:

java 复制代码
@RestController
@RequestMapping("/")
public class WeChatDomainCheckController {
    @RequestMapping(value = "/{extension:.+.txt}", method = RequestMethod.GET, produces = MediaType.TEXT_PLAIN_VALUE)
    public Object checkDomain(@PathVariable String extension) {
          return "校验文件中的字符串";
    }
}

value = "/{extension:.+.txt}"是请求的一种通配符写法,意思是可以让所有以txt结尾的请求访问

注意:

  1. 不要自己加子路径,因为该校验文件访问是:www.test.com/aaa.txt。 一旦加了子路径它就找不到了;
  2. 可以通过VM模板返回该字符串,但是记住不要添加任何多余的内容;
  3. 有时候明明写的没问题,但是配置的时候就是报错,这里我建议不要使用返回值的方式,可以使用 httpServletResponse.getWriter().print("校验文件中的字符串");返回。出现这种情况的原因,是有可能是自己在项目中加了HttpMessageConverters的原因

四、微信开发者工具

微信开发者工具开发时可以跳过域名校验

已配置的request合法域名和web-view(业务域名)也可以在开发工具上看到

五、遇到的一些问题

第一个

最近有位老哥也来问我这个东西有没有其他办法,我思考了一下,尝试将外部跳转的域名嵌入到自己的域名页面中,并将校验文件配置到自己的域名下,但是还是不行,真的艹蛋。

还是老老实实配置校验文件吧。

第二个

第三个

相关推荐
IT_陈寒19 小时前
Vite热更新失效?可能你在用Windows
前端·人工智能·后端
IT龟苓膏19 小时前
并发深度解析】硬核手撕 ForkJoinPool + WorkStealing + CompletableFuture 底层源码与大厂面试演练
面试·职场和发展
椰椰椰耶20 小时前
[SpringCloud][14]OpenFeign参数传递方法
后端·spring·spring cloud
onething36520 小时前
Spring Boot + Spring AI 从入门到实战:7天转型计划 Day 3 —— 消息表设计 + 级联删除 + 事务管理
人工智能·后端
荣江20 小时前
Hermes Agent 代码仓库打包工具使用指南(repomix-rs 高性能版)
后端
王某某人20 小时前
LangChain4j 入门:Java 程序员的第一个 AI 对话程序
人工智能·后端
林希_Rachel_傻希希20 小时前
学React治好了我的焦虑症,1小时速通React 前20分钟。
前端·javascript·面试
码农刚子20 小时前
从零开始:在 Windows 服务器上部署 Node.js 项目(小白实战教程)
后端·node.js
Cache技术分享20 小时前
435. Java 日期时间 API - Clock 灵活获取当前时间
前端·后端
浩子coding20 小时前
通过 Spring AI Alibaba 源码,看如何玩转 ReAct 智能体范式
人工智能·后端