问题描述
web项目在电脑上使用正常,用手机也能访问到,甚至弹窗功能都可用,但是无法登陆。
问题原因
你看下你后台的输出就知道了,按钮点击后,后台输出压根没反应,说明压根没调到后台。
是UI不支持手机?
这个手机浏览器不行?
其实都不是,现在手机及手机浏览器功能都已经和电脑差不多了的,不是插件之类的都不会影响的。
问题其实很简单,你这个web项目可能是做了前后分离,所谓前后分离表现形式就是前端和后台分成了2个服务,所以你的web入口其实是有2个的。你访问前端页面的url请求的服务与后台的服务不是同一个服务,比如:
你访问前端页面url是http://192.168.1.11/xxoa/index.html.
然而你的后台访问的却是代码上的controller方法http://192.168.1.11/xxoa-1.0/login.do并且这个请求是从前端页面上发起的。
如下图示:
你以为的web系统能正常访问,其实你只是访问到了前端页面而已。后台方法是有浏览器调用的,压根没访问到。你可以试着单独访问一下你后台的方法没在手机浏览器*问http://192.168.1.11/xxoa-1.0/login.do,你看看这个能否访问到。你这样都不能访问到的话,浏览器肯定也访问不到了。自然就会出现点击按钮不登录的情况了。
问题解决
明白原因问题就好解决了,解决方法就是:你只要验证通过访问后台方法可行,你手机就能正常使用这个web系统了。所以快去检查一下你的后台方法是否能访问到吧,一般做前后分离遇到这种情况的,其实都是你把后台请求地址写成localhost:8080/xxoa/login.do了而已。这是习惯性的问题,你肯定是第一次做前后分离没经验,因为以前不作分离时,访问项目只有一个地址而已。
问题延伸
当然,也许你把localhost改过来,而且可以单独访问到后台controller,但是web项目还是无法在手机上运行。这时候问题就升华了,你的web页面和后台服务应该部署在了2个服务器上,你的前端页面与后台服务不在同一域内,你的系统跨域了。
一般来将,浏览器为了安全考虑会禁止网页跨域的,所以你无法使用。
这时候你就得去百度一下跨域如何解决了。