session的实现原理
服务器会为每一个访问服务器的用户创建一个session对象,并且把session对象的id保存在本地cookie上,只要用户再次访问服务器时,带着session的id,服务器就会匹配用户在服务器上的session,根据session中的数据,还原用户上次的浏览状态或提供其他人性化服务。
http是无状态的通信协议,客户端(浏览器)每一次和服务器的通信,在服务器的眼里看,都是一次次孤立的事件,这种模型显然是无法满足“定位”(区分)不同用户请求的需求;
因为第一条的原因(有痛楚自然就会有需求,有需求就会有解决方案),服务器这边需要“某种手段”来实现区分不同客户端(浏览器)的需求;
需求模型就出来了:站在服务器的角度,每时每刻都有非常多的http请求到来,但是这些请求,从协议的角度来看,服务器是无法区分它们分别归属于哪个客户端(浏览器),因此,我(服务器)必须主动给他们分类才行,怎么样分类呢?
服务器用的是给客户端(浏览器)发放一个标志信息(临时身份证)来实现的,这个标志就是一个字符串(也就是session ID)
当用户第一次登陆(或者访问)的时候,服务器就会生成这样的一个字符串,此时,session ID就诞生了(从无到有),服务器这边自然会保存下来这个字符串了(不然服务器怎么能对客户端进行持续服务?)
同时,服务器还会把这个字符串“回传”(响应客户端/浏览器的HTTP请求)给客户端(浏览器),目的就是告诉客户端(浏览器):你丫现在有个临时身份了,保存好(至于怎么样保存,各位就可以只有发挥想象了,当然cookie这玩意也是从这里才开始粉墨登场的),下次再来访问的时候记得对暗号(请求的时候,无论用什么方式,把这个字符串告诉服务器即可)!
推荐链接:
https://segmentfault.com/a/1190000007243675
http://www.cnblogs.com/xdp-gacl/p/3855702.html