微信小程序,安卓可以调接口,苹果调不了的解决方案

今天跟前端进行联调,遇到一个奇怪的问题,做个记录。

问题描述:在微信小程序上面,同一个接口调用,在安卓可以正常访问,但是在苹果缺报错了。如下图:

请求头提示:Provisional headers are shown

解决:

1:跨域

首先第一个想法就是跨域了,不过很快就否决掉了。

原因:安卓和我们自己的后台都可以正常访问

2:tls问题

tls版本正常。

下面附上查看tls版本的方法:

1、打开浏览器(谷歌、火狐、360极速版)都可以,在地址栏中输入域名(一定要包含https的域名)
以谷歌为例:

在这里插入图片描述

打开域名以后,点击F12或右键检查,找到‘Security’,即可查看对应TLS版本

在这里插入图片描述

 附:WIndows系统对TLS的支持

 在这里插入图片描述

 Tips:这里强调一下,tls版本必须大于或者等于1.2才可以,否则的话也会出现开头那个问题

3:SSL证书

1:重新检查了,ssl证书正常,没有过期。

2:检测证书

输入该输入的信息,读取证书。看到以下内容,说明缺少ssl证书。

网址:SSL服务器证书安装检查器_OPENSSL工具包_迅通诚信https://www.myssl.cn/tools/check-server-cert.html

情况1:

我这次遇到的情况查询到最后,发现是证书pem复制少了一段,

因为Apache下载下来有三个文件,一个是根证书pem,一个是中间证书pem,一个是秘钥

而Nginx证书下载下来是只有两个文件,一个fullchain.pem,一个是key

fullchain.pem一般会包含根证书+中间证书,所以会存在两段如下:

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

但是我这次这有一段,也许是其他同事复制少了,重新下载证书内容上去,问题解决!

 中间证书显示正常!

另外,查阅资料的时候,还有另外一种方案可以重新生成中间件证书,记录一下:

首先先找到 Let's Encrypt 生成出证书的4个文件

  1. cert.pem
  2. chain.pem
  3. fullchain.pem
  4. privkey.pem

将 cert.pem 内容复制到这个地址解析 

https://www.myssl.cn/tools/downloadchain.html

 

解析成功可以获得2个下载按钮
使用 [点击下载中间证书文件]

将下载到的文件中的 内容 复制到 fullchain.pem 的 两段内容的中间 ,保存即可。

(需要注意 fullchain.pem 格式要求极为严格 不能存在空行 空格等)

最后重启nginx 问题解决

  1. # 测试配置是否正常
  2. nginx -t
  3. # 重新加载配置文件
  4. nginx -s reload

结论

原因找到,是服务器缺少中间证书导致的。

问题解决!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值