今天下午,客服MM报说手机版xx圈登录不上,测了下,果然登录不上。
手机版xx圈的结构如下:
1.数据接口服务器:使用WebAPI为手机xx圈提供数据接口,所有的数据请求均通过HTTP请求返回
2.手机端服务器(前端):提供websocket通信及手机xx圈的前端(WEB)显示,是的,没错,我们的手机端xx圈其实就是手机软件里直接嵌的网页,怎滴?不服打我啊
登录时手机端与前端服务器建立websocket连接,成功之后由前端服务器向数据接口提交数据验证用户登录,成功之后返回给手机,再由手机跳转到登录成功后的默认界面(再强调一次,是WEB的)
后面的所有操作就全是在网页里完成的,网页ajax异步请求,因为数据接口与前端没有在同一台服务器上,这涉及到了跨域的问题,我们知道js是不允许跨域的,所以就有了个jsonp这个方法,不过比较麻烦,我们就用了nginx来做反代,就是在前端服务器上架了个nginx反代服务器,当然手机上显示的网页也是架在nginx上的,所有的需要提交到接口上的请求,都是通过反代来处理的。
手机端显示的网站用的域名解析在前端服务器上,而且加在了阿里云高防里了,所有的请求都是向手机端使用的这个域名提交的,之后由Nginx服务器来进行反代转发等。
以上是大概的情况介绍,下面就是查问题了:
擦,登录不上了,手机端没有任何提示,最先想到的就是,看看数据接口有没有问题,使用postman向接口提交登录请求,成功返回;使用putty登录前端服务器 telnet数据接口服务器指定的端口,通的;在putty上,使用命令访问接口,也是通的,成功返回;使用postman向前端ajax使用的接口提交请求,也成功。
真的是活见鬼了,最后怀疑是高防的问题,把防御关掉,手机端登录成功。。。最后想了下,把127.0.0.1加到白名单中试一下,防御全打开,没问题了,问题解决。
阿里云真是坑爹啊,竟然能连127.0.0.1都给屏了。。。
本文作者:老徐
本文链接:https://bigger.ee/archives/66.html
转载时须注明出处及本声明
One comment
哈哈哈,这说明做的才完整