微信小程序请求不到接口问题分析和解决过程

unimof 2021年02月22日 875次浏览

1. 问题

最近折腾微信小程序,在开发工具配置了接口地址(使用 HTTPS),发现请求不通,查了一下微信小程序官方文档,地址:微信官方文档-小程序-网络

image.png

需要在微信后台配置一下合法域名:「小程序后台-开发-开发设置-服务器域名」
配置完成后,在开发工具详情可以查看是否配置成功,如下图:
image.png

到此,开发工具确实没有请求失败的问题了!一阵开心,提交一个体验版,准备测试一下。

然而,悲剧的事情来了,发现真机版无论如何都不能请求出来接口数据。接口头部出现

Provisional Headers are shown

警告信息

2. 分析

出现这种奇怪的问题,首先还是搜索一下,看看有没有其他人碰到类似的问题,通过总结前人的经验,发现问题可以归结为以下两类:

    1. 没有在微信后台配置可信域名
    1. 接口的 SSL 证书链有问题

很明显,第一种不是我想要的,直接干第二种。

myssl工具上去校验一下:

image.png

果然是证书链不完整的问题!!!

在接口部署的过程中,我使用的是Nginx 跳转后端 Docker 容器,SSL是在Nginx 中配置的

image.png

SSL 证书是在 freessl 申请的免费证书(acme),于是前往 证书所在目录查看了一下,发现证书目录下,居然有3个 cer

image.png

开始我配置的时候,使用的是 域名.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

在小程序体验版上验证,完美决绝!!!