收藏
回答

wx.request(局域网下)报fail url not in domain list 怎么解决?

小程序是在局域网下使用(非局域网要在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和子网掩码等判断是否是在同一局域网内。

最后一次编辑于  06-16
回答关注问题邀请回答
收藏

7 个回答

  • 胃里养了只霸王龙
    胃里养了只霸王龙
    2023-02-22

    红米node11,华为nova 9 pro ,VIVO V77e 都是你们的测试机么?

    2023-02-22
    有用 1
    回复 13
    查看更多(8)
  • C
    C
    06-04

    开发社区里要么就见不到官方人员的身影,要么就是出来敷衍两句,从未见过有官方认真处理开发者提出的问题的,一例都没见过!

    06-04
    有用
    回复
  • 李振
    李振
    04-27

    请问这个解决了吗?鸿蒙也遇到了这个问题

    04-27
    有用
    回复
  • ☀靓果果☀
    ☀靓果果☀
    2023-09-06

    目前解决了嘛?

    2023-09-06
    有用
    回复
  • H1HAO 🇨🇳
    H1HAO 🇨🇳
    2023-02-22

    1.打开调试能不能访问,如果可以就是域名问题

    2.如果不可以请查看是不是在同一个网络下,因为你没说是不是穿透的ip地址

    3.没穿透就连接同一个网络在开调试(测试阶段调试必开,除非使用线上地址并且备案和配置安全域名)

    2023-02-22
    有用
    回复 1
    • kuerjinjin ᯤ ᒼ ᴶ ᴸ
      kuerjinjin ᯤ ᒼ ᴶ ᴸ
      2023-02-22
      是这样,我们小程序的使用场景是客户需要自己去选择wifi配置ip端口,在客户的局域网内使用,不是使用我们本地固定的ip做外网穿透,让客户来访问。而且这个使用ip加端口的方式在大部分的手机上用都是可以的,同一环境下,相同的配置,只有部分手机报这个错误。
      2023-02-22
      回复
  • ???
    ???
    2023-02-22

    整个https域名,配置合法域名,开发工具和体验版的开发调试正式都是不生效的

    2023-02-22
    有用
    回复 3
  • Pepsi
    Pepsi
    2023-02-22

    1. 将局域网内的URL添加到小程序开发者工具的request合法域名白名单中。

    2. 将小程序的request域名改为`*.local`,这样就可以访问局域网内的URL了。

    3. 设置代理服务器,让小程序的请求先转发到代理服务器上,再由代理服务器转发到局域网内的服务器上。

    2023-02-22
    有用
    回复 2
登录 后发表内容