一直没有弄明白cookie和session到底有什么不同,直到今天上网找了一些资料,查看来一下,恍然大悟!
cookie主要是是通过客户端的记录信息来确定访问者身份,session则是通过在服务器上记录客户端信息来确定访问者身份的。这种想法是由于HTTP是无状态的连接,服务器从网络连接上无法得知客户端的身份,所以才用了这种机制,进行记录。
那访问不同的网址时,cookie怎么知道该用哪些值进行访问呢?实际上,浏览器可以根据域名的不同进行选择,到底携带哪个网址的cookie.
解决了这个疑惑,那么cookie是根据什么来判断存在时间的有效期的呢?实际上,cookie的maxAge决定了cookie的有效期。当maxAge>0时,cookie会在maxAge秒后消失,在消失之前,cookie是被保存到了客户的本地硬盘中;当maxAge<0时,cookie只在浏览器的本窗口或者本窗口的子窗口有效,浏览器关闭后,cookie消失,这种生命期为浏览器会话器的cookie,称为会话cookie,此时的cookie是被保存到了浏览器的内存中;当cookie=0时,就表示要删除cookie,通过设置该cookie的及时失效实现删除cookie.,失效的cookie会被浏览器从cookie本地或者浏览器内存中删除.
session相当于在服务器上建立了一份用户的档案,用户访问时,查看档案即可。
这份档案,一般会存放在服务器的内存中,为了获取到更高的存取速度。但是,由于每个用户都会有一个session,这样当大量用户访问时,肯能会导致服务器的内存溢出,为了防止内存溢出,服务器会把长时间内没有活跃的session进行删除,这个时间即为session的超时时间。
Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,并维护该Session。用户每访问服务器一次,无论是否读写Session,服务器都认为该用户的Session“活跃(active)”了一次。
那么如果客户端开启2个不同的浏览器,session会一样的,答案是不一样的,会是2个不同的session.但是如果在本来的浏览器窗口,再次新建窗口,此时的窗口相当于子窗口,和父窗口有相同的cookie和session.