小程序是在局域网下使用(非局域网要在mp后台配置ssl证书使用https的url,并且域名要备案等等),wx.request 配置的url 使用的是http://ip:port/api。并且在微信小程序开发工具中-详情-本地设置中勾选了“不校验合法域名,web-view(业务域名),TLS版本以及HTTPS证书”。
报这个错误的情况目前有两种:
1.在部分机型中出现,目前已知:红米node11,华为nova 9 pro ,VIVO V77e 等等;在小程序报错的手机中使用浏览器中访问api没问题,应用app里使用api也没问题,只有微信小程序会报错。
2.网络环境稍微复杂一点,使用的是两级路由,api服务端在一级路由,手机连接的是二级路由。手机微信小程序访问api,在正式版(线上版)和不开调试的体验版中会报这个错误;在开发版和打开调试的体验版可以正常使用,不报错。
目前,查看社区以及官方回答的部分解决方法,测试均无效。
1.删除小程序重新打开(没用)
2.开启位置服务(没用)
3.清空小程序缓存(没用)
官方唯一给的解决方案 目前看都没用,请问官方和遇到果类似问题的社友,有无可行的解决方案?
更新:
如果是局域网内使用,确保手机本机ip和局域网内服务器ip在同一局域网内。参考文档
wx.request/wx.connectSocket/wx.uploadFile/wx.downloadFile 的 url 参数允许为 ${IP}:${PORT}/${PATH}
的格式,当且仅当 IP 与手机 IP 处在同一网段且不与本机 IP 相同(一般来说,就是同一局域网,如连接在同一个 wifi 下)时,请求/连接才会成功。
在这种情况下,不会进行安全域的校验,不要求必须使用 https/wss,也可以使用 http/ws。
所以,再有类似 fail url not in domain list 或者 cronet组件错误 ERR_CERT_COMMON_NAME_INVALID 等错误,优先检查手机本机IP。可以使用 wx.getLocalIPAddress 获取本机ip和子网掩码等判断是否是在同一局域网内。
红米node11,华为nova 9 pro ,VIVO V77e 都是你们的测试机么?
开发社区里要么就见不到官方人员的身影,要么就是出来敷衍两句,从未见过有官方认真处理开发者提出的问题的,一例都没见过!
请问这个解决了吗?鸿蒙也遇到了这个问题
目前解决了嘛?
1.打开调试能不能访问,如果可以就是域名问题
2.如果不可以请查看是不是在同一个网络下,因为你没说是不是穿透的ip地址
3.没穿透就连接同一个网络在开调试(测试阶段调试必开,除非使用线上地址并且备案和配置安全域名)
整个https域名,配置合法域名,开发工具和体验版的开发调试正式都是不生效的
1. 将局域网内的URL添加到小程序开发者工具的request合法域名白名单中。
2. 将小程序的request域名改为`*.local`,这样就可以访问局域网内的URL了。
3. 设置代理服务器,让小程序的请求先转发到代理服务器上,再由代理服务器转发到局域网内的服务器上。