客户端,基于H5Plus使用MUI框架开发的APP,运行环境为小米手机真机测试。
服务端,使用SpringBoot搭建的项目,运行环境为SpringBoot内置Tomcat,部署端口为8090。
电脑和手机连接同一个WiFi,手机点击按钮,触发Ajax请求,无法访问在笔记本电脑上部署的SpringBoot后台。
原Ajax请求地址,使用的是localhost
,打开电脑cmd窗口,输入ipconfig查询电脑的ipv4地址,修改localhost为电脑私网IP。
mui.ajax("http://192.168.1.215:8090/coding/send",{
data:{
user:telephone.value,
},
dataType:'json',//服务器返回json格式数据
type:'post',//HTTP请求类型
timeout:10000,//超时时间设置为10秒;
headers:{
'Content-Type':'application/x-www-form-urlencoded'},
注: 这里最好的方法,是单独写一个IP配置文件,这样每次只需要更改配置文件的IP就可以了。
更新手机端代码后,重试Ajax请求。仍然无法和后台通信,Ajax返回abort
错误,此时防火墙已经关闭。
打开手机所连接的WiFi设置,找到此时手机的IP地址,在电脑的cmd窗口中ping一下,可以ping通,但是就是访问不了后台,抓包工具也没有抓到有包过来。
此时,手机和电脑均在同一局域网,防火墙并没有拦截请求,腾讯电脑管家已经关闭。继续在cmd窗口使用netstat -na
查看TCP的192.168.1.215:8090是否有连接状况,并没有找到8090端口的TCP连接。
通过查询发现路由器有一个AP隔离模式,因为路由器不是我家的,所以无法确定该路由是否开启了AP隔离模式,但是真机测试结果和AP隔离非常相似。
AP隔离是一种路由模式。AP隔离指的是开启之后,各个连接的设备不能互相通讯,起到隔离的作用,来保障不同用户的安全。《详细见 百度百科AP隔离》
方案 1(极不推荐) 打破手机和电脑在同一局域网的条件,使用NAT做内网穿透,手机和电脑可以在不同的局域,可以直接在公网中访问后台,没有尝试过这种方法,个人觉得比较麻烦。
方案 2(推荐) 在上述问题的基础上(将手机和电脑通连接在同一个WiFi路由器上,构成在同一局域网条件),如果有条件,可以尝试关闭路由器的AP隔离。
方案 3(推荐) 电脑打开移动热点,手机连接热点构成在同一局域网条件。
方案 4(推荐) 手机打开移动热点,电脑连接热点构成在同一局域网条件。
注: 这里每一种方案的IP地址都不一样。
所有方案都需要注意以下几点:
如果连接成功,使用netstat -an
是可以找到手机和电脑8090端口的一个TCP连接的;同时,在SpringBoot的后台也会有记录。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。