现实中的网络问题,真的是非常复杂,互联网从业人员,除非实际碰到诡异的问题,恐怕是很少能够完善地考虑数据到用户端的真实情况。
今天就遇到一个很纠结的问题,用户用自己的帐号密码登录,可进入的是别人的主页,很诡异。跟用户要到帐号密码,登录,却是正常地进入到帐号对应的主页,而用户却不断地反馈,进入到了别人的主页,而且不是个案。
联系用户,远程查看,发现真的如用户所说,登录后并不是自己的主页,当时第一个想法是,神奇地见鬼了!
在用户机器上装了fiddler抓包,将抓到的包,传到自己机器上看,也是返回的别人的主页数据。因为无法将用户请求定位到公司具体的机器上,不好在服务器上抓包查看(具体涉及公司具体情况,详细不解释),定位起来非常麻烦。
后来注意到一个细节,在我的机器上replay request,同样的请求包,得到的数据是不一样的,在我的机器上得到的是正常的用户帐号对应数据。见鬼了!
无限纠结下,偶尔查看到其有问题的返回包头中,有这么一行:“X-Via: 1.1 xx130_87:8106 (Cdn Cache Server V2.0)”,在前台同事一起定位后发现,前台在某些特定情况下,没有传用户标识给后台(这种情况下后台只能在cookie中取用户惟一标识),因此,很多用户的外网请求,url是完全一致的,导致用户请求该CGI的数据,在经过的代理中被缓存住了。
因此出现了用户用自己的帐号密码,而且在没有窜cookie的情况下,进入的却是别人的主页这种异常灵异的事件。
解决文字就是,对于前台的Get请求,即使后台不需要,前台也要传一个用户的惟一标识,保证url的惟一性。
互联网的具体情况就是,你写出来的程序是一回事,真正到用户端的数据,可能是另一回事,要全局考虑问题。