uni-app/微信小程序开发踩坑记 – 业务域名篇

发布于 2021-01-18  3936 次阅读


最近在用uni-app开发小程序。在使用uni.request()的过程中,发现向业务域名请求的内容在HBuilderX的内置浏览器里面和微信开发者工具的预览加载正常,但是在Chrome和小程序真机预览中无法加载。体现为链接有100ms左右的延迟,但是请求为failed,没有任何preview。

一开始以为是业务域名的问题,但是通过检查以后发现没有问题,服务器也配置了SSL。而且Chrome中不应当受到小程序业务域名的影响。

解决方案

Chrome :CORS跨域请求问题

原因是Chrome自某个版本开始,将CORS控制调整到了严格级别,也就是在Request Header中体现出的Referrer Policy: strict-origin-when-cross-origin

解决方法是在服务端(这里用的是php)配置如下代码:

header('access-control-allow-credentials:true');
header('access-control-allow-origin:'.$_SERVER['HTTP_ORIGIN']);
header('Access-Control-Max-Age: 1800');
header('Access-Control-Allow-Methods:GET,POST,PUT,POST');
header('Access-Control-Allow-Headers:x-requested-with,content-type');

微信小程序:SSL证书链问题

在排除CORS问题后,Chrome端请求正常。但是小程序端问题依旧。

增加错误信息输出,得到了request:fail -2:net::ERR_FAILED

经过长时间的资料查找,最终发现是服务端的SSL证书链不完整导致的问题。

参考:https://blog.csdn.net/cike___/article/details/109544449

检查地址:https://ssltools.digicert.com/checker/views/checkInstallation.jsp

将中间证书crt_chain的内容直接粘贴在你的服务器证书后面即可。

在这里插入图片描述

等风来,不如追风去。