代理服务器引起的用户信息错乱
程序员文章站
2022-07-14 21:09:11
...
前段时间项目的登录模块出了一个问题,公司内的测试人员如果同段时间登录后,页头的登录信息处,也就是“欢迎你,某某某,等等等”之类的信息,出现了错乱的情况,比如蜡笔小新登录完毕再切换到其他页面后,页头显示的竟然是樱桃小丸子的信息,这不是气煞小新了,他可是个男人啊,怎么变成了女孩纸。。。但进入到个人空间页面,里边显示的还是小新的个人信息,这是肿么回事?于是我立即想到了网络环境,即我们都是通过代理服务器上网的,有米有可能是代理服务器搞的鬼呢?同时一个同事说其他某个知名网站好像也出现过类似问题,貌似是代理服务器的问题。这样我立即发动了周围没有通过代理服务器上网的朋友(其实就是我对象),经他们公司同事鉴定,未出现该类问题,那基本百分之七十是代理服务器的问题,原理是什么呢?网上有一些热心的朋友发了很多类似的文章及问题,经过学习和理解大致简要了如下的流程:
代理服务器的这个功能是为了便于局域网内用户可以共享互联网数据,加快访问互联网的速度,但是对于实时变更动态信息的页面来说却是不适合的,于是就有了本篇文章的问题。
那如何解决这个问题呢,如何不让代理服务器返回一个缓存的静态页面?那就是要告诉代理服务器我的这个请求不需要你从缓存中获取。由于我们网站的其他信息还是可以共享的,唯独页头的用户信息是不可以的,那么就考虑把用户信息这块单独做个请求,Ajax的post请求不会被缓存,于是我们就采用了此种方式来加载个人信息。
这可能不是一个好的方法,但基于目前我们的业务和需求条件来说已经够用了,随着业务的需求还会有更好的解决方案。fighting,小新!
- A用户在首页通过ajax发出登录请求
- 服务器处理该请求后返回A的个人信息
- 浏览器将ajax返回的个人信息置于页头处
- 用户A开始浏览新闻页面(请求名称假设为http://xiaoxin.com/news),新闻页面页头处取session里的用户信息并展示出来。
- 代理服务器缓存新闻页面的url--http://xiaoxin.com/news 及对应的页面内容(该内容里包含了页头处A的个人信息)
- 此时,B用户也在首页通过ajax发出了登录请求
- B用户浏览新闻页面news
- 代理服务器从它的缓存中找到了http://xiaoxin.com/news
- 代理服务器不再去请求服务器,直接将它缓存中对应http://xiaoxin.com/news的静态页面拿到返回给用户。
- 于是B就看到了包含A信息的新闻页面
代理服务器的这个功能是为了便于局域网内用户可以共享互联网数据,加快访问互联网的速度,但是对于实时变更动态信息的页面来说却是不适合的,于是就有了本篇文章的问题。
那如何解决这个问题呢,如何不让代理服务器返回一个缓存的静态页面?那就是要告诉代理服务器我的这个请求不需要你从缓存中获取。由于我们网站的其他信息还是可以共享的,唯独页头的用户信息是不可以的,那么就考虑把用户信息这块单独做个请求,Ajax的post请求不会被缓存,于是我们就采用了此种方式来加载个人信息。
这可能不是一个好的方法,但基于目前我们的业务和需求条件来说已经够用了,随着业务的需求还会有更好的解决方案。fighting,小新!