【缓存--题外篇】session、cookie是什么(二)

    上一篇介绍了session和cookie的产生,以及cookie是什么,本篇继续学习。

session
    session的中文翻译是“会话”。session对象存储特定用户会话所需的属性及配置信息。这样当用户在应用程序的web页之间跳转是,存储在session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的web页时,如果该用户还没有会话,则web服务器将自动创建一个session对象。当会话过期或被放弃后,服务器将终止该会话。这种用户信息存储方式相对cookie来说更安全。     当每次发出请求建立一次对话,授权成功是给一个唯一的cookie,sessionId是存放在它里面的,用户提交了表单时,浏览器会将用户的sessionId自动附加到Http头信息中,当服务器处理完这个表单后,将结果返回给sessionId所对应的用户。服务器通过sessionId作为key,读写到对应的value,这就达到了保持会话信息的目的。

session的创建

    当程序需要为一个用户创建session时,服务器首先检查这个客户端的请求里是否包含sessionId,如果已经包含则说明已经为此客户端创建过session,服务器将通过这个sessionId检索出相应的session。如果客户端请求不包含sessionId,则为客户创建一个session并生产一个与之关联的sessionId,sessionId的值是一个既不会重复,又不容易被找到规律以仿造的字符串。

session的失效

    session是存放在服务器端的,可以设置其过期时间,sessionId是存放在cookie中,一般默认为临时对话,在浏览器关闭该session就会失效。

cookie禁用

    如果客户端禁用了cookie,通常有两种方法实现session而不依赖cookie。
  • URL重写,把sessionId直接附加在URL路径后面,通过URL来传递sessionId,服务端接受到之后来分析获取sessionId。
  • 表单隐藏字段。服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把sessionId传递回服务器。
<form name="testform" action="/xxx"> 
<input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764"> 
<input type="text"> 
</form> 

session共享

    对于多网站(同一父域不同子域)单服务器,我们需要解决的就是来自不同网站之间sessionId的共享。
    由于域名不同,而sessionId又分别存储在各自的cookie中,因此服务器会认为对于两个子站的访问,是来自不同的对话。方法:通过修改cookies的域名为父域名达到cookie共享目的,从而实现sessionId共享。
    session共享的机制在使用redis时也有体现,当使用分布式部署项目时,这时就出现了服务器集群,这时该如何保证用户登录的时候无论使用哪一个服务器都可以保证验证成功呢?这一部分现在还不太确定是否正确,大家自行验证了。但大体上是有两种思路可以实现的:①使用redis拦截器统一一个入口。②服务器主从复制。
参考资料

https://www.cnblogs.com/wxinyu/p/9154178.html
https://blog.csdn.net/bwh0520/article/details/78808181
https://blog.csdn.net/ToBeTheEnder/article/details/52485948
https://blog.csdn.net/h19910518/article/details/79348051
https://www.cnblogs.com/endlessdream/p/4699273.html
https://blog.csdn.net/weixin_35804181/article/details/79643525

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值