请教一个关于服务器域名配置使用局域网IP的问题?
1、前提 微信小程序的官方开发文档(https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html)写道: (1)“从基础库 2.4.0 开始,网络接口允许与局域网 IP 通信,但要注意 不允许与本机 IP 通信。” (2)“服务器域名请在 「小程序后台-开发-开发设置-服务器域名」 中进行配置,配置时需要注意:xxx,域名不能使用 IP 地址(小程序的局域网 IP 除外)或 localhost。” 如果我没有理解错,这两句话都表达了【小程序是可以与局域网内非本机的服务器的IP通信的】。 PS:未找到文档的最后修改时间。 2、问题 我正在配置小程序的服务器域名,申请了一台公司的内网服务器,准备测试一下。 印象里,要想在【开发者模拟器以外】的场景使用小程序并实现通讯,比如在手机端预览,要在 小程序-开发设置-服务器域名 处配置好域名才行。 但是,当我将该服务器的IP按要求格式填入对应位置之后,却显示“balabala未经备案”,不能保存。 这个IP当然不可能去ICP备案了,但是,IP符合要求,起码让我保存啊,不然怎么与局域网服务器通讯呢? 文档里明明写了可以与局域网内非本机IP通讯的!(详见本文第1部分,PS:我也用2.4以上的基础库版本试了)怎么肥四 ? 3、请教 有没有大神可以: ① 发现还是我操作有问题导致的,请赐教。 ② 提供其他该场景的解决方案(内网穿透除外),感谢告知。 ③ 一起吐槽 腾讯的在线客服等待半小时不接,并直接挂客户电话。 ④ 一起吐槽 微信开发文档写得像坨💩。 最后,万分感谢~ ====== 以上编辑于2023-12-15,以下更新自2023-12-18 ====== 4、再次测试 根据评论区一位兄弟(Mr.Zhao)的提醒(“局域网通信是不需要配置合法域名的”),我检查了访问服务器是否存在网络问题,发现:通过HTTP协议访问服务器的权限被关闭了。但是,这并没有解决问题,情况如下。 打开网络权限之后,我的个人电脑和手机可以通过浏览器 使用服务器IP+端口访问我预先写好的测试页面了,这说明前后端之间的HTTP访问没有问题了。 然后,再次测试: (1)开发者工具中的调试器,可以访问。(要勾选“不校验合法域名”) (2)预览到手机端微信,不能访问。 (3)真机调试到手机端微信,可以访问。(要勾选“不校验合法域名”,不用勾选局域网模式) (4)上传体验版,手机端微信打开,不能访问。 (5)上传体验版,电脑端微信打开,不能访问。 结论:将通信IP设为服务器IP,只有在可以勾选“不校验合法域名”的情况下是奏效的,其他使用场景还是白搭。 这一点,开发文档没有说明or与开发文档所述冲突,如果不是我的操作还有问题,我只有不当讲的话送给微信了。 5、补充一点 14日向微信客服提交的问题今天(18日)终于有了回答:“抱歉,balabala”,呵呵。 更别说上周打的在线客服电话还不接呢。 这,就是 微信开发生态! ====== 一小时后,结案 ====== 6、破案了 破案了,朋友们。 在本文第一部分的开发文档中,“配置流程”第二条“域名不能使用 IP 地址(小程序的局域网 IP 除外)或 localhost。”,“局域网”三个字有个超链接,点击跳转到“mDNS页面”(https://developers.weixin.qq.com/miniprogram/dev/framework/ability/mDNS.html),会发现多了一条限制:不仅要同一局域网,还要“同一网段”。 这么大的事情,为什么不早说? 为什么不能在前面的文档中就说明呢?“同一网段”这么几个字,写出来有这么难? 我认为,这样拐弯抹角的描述不是好的开发或使用文档能做出来的。 7、结论 经尝试,我的个人电脑和同事的手机处于同一网段,手机端体验版访问后端程序成功。 但是!即便如此,我还是认为“同一网段”的限制不好。 因为,经过与公司网络管理人员咨询,我司的若干服务器没有一台和办公网处于同一网段,而我的测试用户都是连办公网Wifi的,这意味着他们还是不能访问服务器上的后端服务(除非就用我的电脑,或整个树莓派)。而且我相信,还有很多公司也都存在服务器与公司Wifi不在同一网段的情况。 所以,我认为“同一网段”的限制有点过了,不够普适,不如就“同一局域网”就得了。 8、致谢 再次感谢 Mr.Zhao 的热心回答和提醒,他很熟悉这一套,不是资深小程序开发者,就是微信官方人员了(猜测,也可能两者都是),谢谢你。