最近看到一篇讲cookie和session的文章,严格来讲是一篇stackoverflow的回答,非常清楚和有趣,翻译如下:
你可以存储一段文本,比如:name=bob&password=asdf到cookie中并将其反复发送到服务器端来表明自己的身份,
可以把这个过程想象成你在跟一个记忆有问题(7s记忆时间?鱼)的银行柜员打交道,哪怕你一小时去找一次她,然而每次办理业务都不再认识你而需要你证明身份,每次你都要递上身份证,来证明你是某某人,这个身份证就像是一个充满敏感信息的cookie
当然用cookie来存贮这样的一些敏感的信息非常非常的不安全,并且cookie的长度是有限制的。
现在,这个柜员知道自己记忆有问题,于是把你的信息写到了一个纸条上并且分配了一个短的ID给你,这样每次办事的时候你就不用递上身份证证明自己,你只要说我是client 12
把这个例子翻译成网络服务: 服务端会存储相关的信息到session对象(纸条)中,并且生成一个session ID, 这个ID会返回给客户端并且存储在cookie中, 当客户端下一次把cookie发过来时,服务端就可以依据在cookie中的id去寻找seesion对象,如果找到了,你的身份就确定了。
是不是挺清晰有趣,那接下来就会有人问了,服务端如何把信息存储到客户端的cookie中呢?
服务器端只要在response header中加入Set-Cookie的属性就可以了,例子如下:
Set-Cookie: JSESSIONID=xxxxxx
完成!