一、Cookies & Session
中学学英语的时候,清晰的记住了Cookies ,翻译成中文就是“小饼干”。然后开始学习编程了,也不知道什么时候,迷迷糊糊的知道了cookies的另一意思 :用户使用浏览器时,用来保存用户的登录信息,于是乎又在脑袋里记住了一个“cookies ”;接着学,又碰到了“session”,书上说是用来保存用户跟服务器之间的会话信息。当浏览器关闭时,会话结束。
又是一个保存信息的东东,好熟悉啊,这“session”不是跟那个“cookies”有点相似哦。
于是各种查,然后就有了如下定义:
Cookies 如何解释?
指网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。Cookies :意味着在本地保存了用户的少量信息:用户注册,登录信息,浏览时间等。
key:保存在客户端
典型的应用
Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用。另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。
Session 如何解释?
Session中文是“会话”的意思,在ASP中代表了服务器与客户端之间的“会话”。
作用时间:
既然是一次会话就会有始有终,所有Session的作用时间是从用户到达某个特定的Web页开始,终止于该用户离开Web站点,当然在程序中利用代码终止某个Session,这属于强行结束会话。
Key:保存在服务器。
好处
当个用户:引用Session则可以让一个用户访问多个页面之间的切换也会保留该用户的信息。
多个用户:系统为每个访问者都设立一个独立的Session对象,用以存储Session变量,并且各个访问者的Session对象互不干扰。
一个形象的例子
如果还不理解的话,看一下下面这个例子:
角色介绍:
浏览器:张三,李四
服务器:饭店
情景:饭店消费
张三进店后,坐在9号桌子,开始点菜,服务员讲张三的点菜单,加上标记“9号菜单”保存了张三的点菜信息,然后交给厨师去做,然后在吃饭起家,张三发现不够吃,又要追加一个菜,服务员就会在“9号菜单”上继续给他加菜,然后交给厨师。那么这个“9号菜单”就是我们的“session”。
如何理解这个session?
首先这个“9号菜单”保存在(饭店)服务器端,其次在张三吃饭期间,这个会话是一直在持续,在这张三结账之前,他可以进行任何点菜操作,服务端都会如何记录在“9号菜单”,也就是准确的保持和张三的会话,而不会重新再来。当张三结账离开,至此,张三和饭店的交易结束,会话结束“Session ”结束。
同上,一个饭店不止有张三一个客户,还有李四等。当他们同时点菜时,饭店就会跟他们一个各自的标记(例如桌号),这样,就会把每个客户的信息都保存起来。Session信息对客户来说,不同的用户用不同的Session信息来记录。
二、本是同根生
都是用来保存数据的,他们的区别和联系又是怎么样的呢?
最大的区别:保存位置不同
联系:Session与Cookie是紧密相关的。服务端保存客户信息需要有客户端的支持,在启用Session时,ASP自动产生一个SessionID.在新会话开始时,服务器将SessionID发给客户端,Cookies 保存,再次登录的时候,这个SessionID 就是由 Coolies 提供,来保持会话。所以要求Session的使用要求用户浏览器必须支持Cookie,如果浏览器不支持使用Cookie,或者设置为禁用Cookie,那么将不能使用Session。
根据以上解释:我们是不是可以把他们理解为一个东西。cookies是session在客户端的称呼。先来看session机制:
session机制是一种服务器端的机制,当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为sessionid),如果已包含则说明以前已经为此客户端创建过session,服务器就按照sessionid把这个session检索出来使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的sessionid。
cookies机制:Cookies就是服务器暂时存放在你的电脑里的资料(.txt格式的文本文件),好让服务器用来辨认你的计算机。当你在浏览网站的时候,Web服务器会先送一小小资料放在你的计算机上,Cookies 会帮你在网站上所打的文字或是一些选择都记录下来。
由此看来,服务器发送的SessionID在客户端是不是就是cookie而存储在用户的浏览器中呢?
因为他们所处的位置(作用域)不同,所以生命周期不同。在服务器端的session除了要保存已注册过的用户,还需要在具有会话的实时性,生命周期表现在会话上。而cookies则不同,它被服务器派送到客户端,保存在本地,不具有实时性,他只需要记住用户登录该网站的一些登录基本信息,而这些信息不会时时变化,所以他的生命周期是在会话结束到用户下次登录,或者自行修改。
也正因为作用域不同,他们保存的信息也有所不同吧?