超级易懂Cookie和Session

超级易懂Cookie和Session

举个简单的例子:当我们登录淘宝要买东西的时候,我们第一次访问淘宝网页是需要登录自己的账号和密码的,然后我们就可以在浏览器尽情的浏览数据了,并可以把自己喜欢的商品加入自己的购物车,那问题来了:为什么不需要再次登录呢?可能大家会怼我了,因为登录过了啊。
是的,我们第一次是登录过了,但是假如没有cookie和session这两种存数据的机制(对象),我们没打开一个网页其实都是需要重新登录的。
解析:我们使用浏览器(相当一个客户端)第一次登录后,会把我们的信息保存在服务器内存中的session(session存储在服务器),session它能存储任何数据类型包括自定义对象。每个客户端的Session是独立存储的。Session对象用于存储有关用户的信息,用户不能访问和修改其他用户的session。

在服务器端有一个session池,用来存储每个用户的session中的数据,为了区别,给每个存储单元加一个sessionId, 这个sessionId的值是唯一的, 然后把这个sessionId返回给浏览器(以cookie的形式返回) ,用户下次访问时带着这个sessionId, 从session池中找到对应的session存储单元,每个用户都有属于自己的session,不能对其他用户的session进行操作。
:sessionID是以cookie的形式返回给浏览器端。浏览器将接收到的存储sessionID的cookie保存在内存中(浏览器端),当关闭浏览器和重启浏览器,cookie失效。

可能大家又会问:当关闭浏览器和重启浏览器,cookie失效,那为什么有时候关闭了浏览器,我还是可以直接不需要登录的进行访问呢?
回答:Cookie分为内存Cookie(也可以说是进程中Cookie)和硬盘Cookie。大部分的session机制都使用进程中Cookie来保存sessionId,关闭浏览器后这个进程自动消失了,因此Cookie和Cookie中的sessionId也消失了,再次连接到服务器时无法找到原来的session。所以,在这种情况下,就是需要再次输入密码登录的。但是保存在硬盘中的cookie却不会丢失sessionId,所以即使关闭浏览器再打开,也是仍能连得上上一次的session,从而可以自动登录。
又比如说,我们可以在登录时选择“记住我”,这时用到的就是硬盘Cookie,此时,sessionId将长期保存在硬盘上的Cookie中,直到session失效为止。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值