1. 问题
最近折腾微信小程序,在开发工具配置了接口地址(使用 HTTPS),发现请求不通,查了一下微信小程序官方文档,地址:微信官方文档-小程序-网络
需要在微信后台配置一下合法域名:「小程序后台-开发-开发设置-服务器域名」
配置完成后,在开发工具详情可以查看是否配置成功,如下图:
到此,开发工具确实没有请求失败的问题了!一阵开心,提交一个体验版,准备测试一下。
然而,悲剧的事情来了,发现真机版无论如何都不能请求出来接口数据。接口头部出现
Provisional Headers are shown
警告信息
2. 分析
出现这种奇怪的问题,首先还是搜索一下,看看有没有其他人碰到类似的问题,通过总结前人的经验,发现问题可以归结为以下两类:
-
- 没有在微信后台配置可信域名
-
- 接口的 SSL 证书链有问题
很明显,第一种不是我想要的,直接干第二种。
在myssl工具上去校验一下:
果然是证书链不完整的问题!!!
在接口部署的过程中,我使用的是Nginx 跳转后端 Docker 容器,SSL是在Nginx 中配置的
SSL 证书是在 freessl 申请的免费证书(acme),于是前往 证书所在目录查看了一下,发现证书目录下,居然有3个 cer
开始我配置的时候,使用的是 域名.cer 作为 ssl_certificate 文件配置的,所以出现问题,应该就是这个 cer 配置有问题
3. 解决
将 nginx 的 ssl_certificate 配置项修改成 fullchain.cer 即可
ssl_certificate xxx/fullchain.cer;
ssl_certificate_key xxx/codercouch.com.key;
然后测试配置,重新加载
nginx -t
nginx -s reload
在小程序体验版上验证,完美决绝!!!