本文已修改重新发布,请直接访问新链接:
1. 写在最前面
上周安全网关上线了全新的一键接入功能,如果你之前使用过安全网关,再体验一下这个新功能,你会发现它严格重塑了整个产品形态。
去年我写了一篇关于安全网关的攻略文章,讲了安全网关的作用和特点,这里再重申一下:
安全网关提供了安全的访问链路,从调用端(小程序、公众号H5、APP、WEB)发起的请求直接进入微信环境接入层,微信接入层通过中转域名将请求转发到后端服务网络的“网关实例”,在“网关实例”中通过路由配置将请求转发到开发者自己的上游业务服务,完成整个请求的处理。
上图是去年网关的架构图,初期形式下我们要自己部署一个网关实例,这里面包括上游服务的配置,路由转发等。
2023年中旬上线“超直连模式”,从安全网关角度,业务端的网关实例可以由安全网关自己接管,无需开发者介入安装。直连模式下,开发者只需要配置源站域名或IP地址,微信会自动分配对应的微信接入域名。
例如源站域名分配有访问域名,只需要访问访问域名就可以直接通过安全网关到达源站业务端。
但需要在前端应用(小程序、WEB、APP)中配置访问域名才可以正常访问,整个架构图中从调用端到业务后端,每个环节都需要改造后才可以正常访问安全网关。
即使是简单连接模式,开发者也需要对调用端进行修改,那么如何避免对调用端的修改呢?
这给我们带来了一个史诗般的新功能:一键访问。
2.功能介绍
在微信小程序中,如果要向外界发送请求,必须使用wx.,它是微信小程序在网络请求方面的封装。
封装好之后可以做的事情非常多,比如微信小程序提供的请求缓存管理器就是封装下的功能之一。另外wx.还会拉取开发者的服务器配置,判断经过它的请求域名是否符合要求……
使用安全网关时,直接将wx.中需要安全访问的源站域名请求进行转发,让其直接走网关链接。其余的仍然正常走源站链接。
一旦支持该能力,开发者接入安全网关的所有修改工作都将消失,开发者只需要进行一系列的配置,就可以在小程序端完成安全链路的修改。
下面详细介绍一下使用细节,请注意,之前使用安全网关原有形式的开发者需要创建新的空间才有这个能力。
3、使用过程中您需要通过微信扫描二维码登录安全网关控制台,同意安全网关服务协议并同意完成激活。
若账户未创建过空间,会自动引导您开通一个空间;根据自身情况选择个人或者企业实体,并给空间命名,一般建议一个空间对应一个业务集群。
在空间中创建安全网关,若没有网关则直接进入一键访问页面。
在一键接入这里选择小程序,将会拉取此空间下授权的小程序,如果空间里没有任何小程序授权,则可以根据指引新增授权,需要小程序管理员(注意不是开发者和运营者之类的)扫码确认。
选择小程序后,点击“开始连接”按钮,小程序所有服务器端配置的域名都会默认直接转发,并且这个功能只在小程序试用版中生效,不会影响上网体验。
后续你可以随时在控制台中更改链接访问覆盖范围,包括小程序范围、域名范围。
这里主要讲解一下访问域名,访问域名其实对应的就是一个网关域名(直观体现在前面的安全网关产品功能上),在后续多终端的接入上会用到这个网关域名,小程序的一键接入可以直接忽略。你可以把它看成是一个链接方案,这个方案下可以有多个小程序,或者一个小程序不同版本的域名配置不一样。(比如我希望开发者版本A域名使用安全链接,体验版本B域名使用安全链接)
点击访问域名中的修改按钮,可以修改访问情况,具体如下
接下来介绍一下每一个配置项作用:
添加小程序:最多可添加2个小程序(小程序可以相同),可添加新的访问域名,也可选择不同的小程序。(注意一个小程序只能绑定一个网关的访问域名)
在监控视图中,你可以查看网关下小程序的链路调用情况,通过观察请求成功率来验证安全链路的兼容性和稳定性,并结合自己的测试判断是否应该继续接入。
若发现一键接入后,仍然持续出现异常请求,可直接一键断开连接。
四、常见情况 1、一键接入后,是否需要修改并发布小程序?
不是,微信小程序底层会根据你的接入配置直接完成网络层的安全链接转换。
2、如何判断一条路由是否经过网关链路?
网关链接的值为 .call:ok,另外在返回body的根层级也会有一个,建议在小程序端记录上报,如果链接有问题可以反馈给安全网关团队进行精准定位。
服务器将收到以下安全链接信息:
3.使用过程中出现问题或者不想再使用安全链接怎么办?
参照上面使用流程最后一项,直接断开连接即可,如果不需要再连接,可以直接删除访问域名。(请注意,删除后访问域名不可恢复)
4、为什么配置好接入之后对应版本的小程序访问还是通过原生链接,而不能通过安全链接访问?
链接一般1分钟内生效,如果用户正在访问小程序,则需要等到下次启动才能打开。如果开发者正在测试验证,建议退出微信后台,重新进入再试。如果还是不行,删除小程序再试(删除小程序主要是清除缓存)
5.为什么微信开发者工具接入配置后,没有使用安全链接?
开发者工具对应“开发版本”,需要确保访问配置在“开发版本”上,如果配置后还是不行,请等待一分钟后重试,一般清除缓存+重启开发者工具即可解决问题。基础库版本需为3.1.5以上,开发者工具版本需为1.06.以上。