超级易懂Cookie和Session

超级易懂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失效为止。

    推荐阅读