大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
项目描述
客户端,基于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地址都不一样。
所有方案都需要注意以下几点:
- 关闭电脑防火墙或者在控制面板添加入站规则
- Ajax请求IP地址需要修改为当前电脑的IP地址
- 修改完了IP,千万不要忘记同步到安卓手机中
如果连接成功,使用netstat -an
是可以找到手机和电脑8090端口的一个TCP连接的;同时,在SpringBoot的后台也会有记录。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/196689.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...