cookie和session的作用

session

session:是在服务器端状态保持机制,提供了一种把信息保存在服务器内存中的一种方法,它能存储任何数据类型,包括用户自定义的数据类型。

每个客户端的session是独立存储的,每个session对象用于存储对应用户的信息,用户不能访问和修改其他用户的session。在服务器端有一个session池,用来存储每个用户的session信息。为了区别,给每个session对象增加一个sessionID,而且这个sessionID是唯一的,然后返回给浏览器。用户下次访问时,带着这个sessionID,从session池中找到对应的session对象。每个用户都有自己的一个session对象,不能对其他用户的session对象进行操作。

sessionID是以cookie的形式返回给浏览器端,浏览器将接收到的存储sessionID的cookie保存在内存中(浏览器端)

session不能跨进程使用(不能跨浏览器使用)

当调用session的abandon方法时,强制性关闭,如注销

session.Abandon();//销毁服务端的session对象

session.Clear();//清除session中键值对

cookie

cookie:是一个在客户端状态保持的文本文件,是一种能够让网站服务端把少量数据保存在客户端(浏览器)的内存或者硬盘,并且能够读取出来的一种技术。

cookie是由服务端生成,发送给user-Agent(一般是浏览器,以下以浏览器来说),浏览器会将cookie中的key-value键值对写入到某个目录下的文本文件内。下次请求同一网站时就发送该cookie给服务器(前提是浏览器设置为启用cookie)。cookie的键和值可以由服务端开发自己定义。这样服务器就知道访问用户是否是合法用户,以及用户是否已经登录过。

服务器可以利用cookie包含信息的任意性来筛选并维护这些信息。

cookie最典型的应用是判断用户是否登录网站,用户可能得到提示:是否记住用户名密码以便在下次访问该网址时不用输入用户名密码而可以直接登录。这就是cookie的功劳。另一个重要的应用场景就是购物车之类的场景:用户可能在一段时间内在同一家网站的不同页面选择不同商品,这些信息都会被写入cookies,以便在最后付款时提取信息。

浏览器会自动将属于该网站的cookie文件发送给该网站服务端。通过域名来区分cookie文件。域名和cookie文件有一一映射的关系。

cookie的缺点:不能存储过多的信息。


cookie和session的生存周期(以20分钟为例)的区别:

(1)cookie的生命周期是累计的,从创建时,就开始计时,20分钟后,cookie生命周期结束,

(2)session的生命周期是间隔的,从创建时,开始计时如在20分钟,没有访问session,那么session生命周期被销毁

但是,如果在20分钟内(如在第19分钟时)访问过session,那么,将重新计算session的生命周期

(3)关机会造成session生命周期的结束,但是对cookie没有影响

你可能感兴趣的:(cookie和session的作用)