session和cookie的区别

  • COOKIE

cookie是采用保持在客户端的保持状态,正统的cookie是扩展HTTP协议来实现的,在HTTP的报文头中设置cookie就可以提醒客户端来生成相应的cookie,这样做是为了解决HTTP是无状态的,用cookie来保存两次之间的状态,从而记录用户的状态。当然cookie也是可以采用浏览器、JS等设置禁用的。cookie主要包括名字、值、过期时间、修改时间。每一次响应请求时,都会与本地cookie的修改时间做比较,如果晚于上次修改时间,就修改,否则不变化。cookie的过期时间是非累加的,有别于seesion。

如果不设置过期时间,表示浏览器关闭,cookie就取消,这样的cookie是会话cookie,这种cookie是存储在内存中的,不是硬盘上。对于存储在硬盘上的cookie,浏览器窗口之间是可以共享的;对于存储在内存中的cookie,浏览器窗口之间是不能共享的。

  • session

session是采用保持在服务器端的,可以使用一个sessionid来保存不同用户的session值,是一种类似于散列表(散列表)的结构。服务器端接受客户端请求,先检查客户端请求里是否已经有了seesionid,已有就继续使用,否则创建新的。sessionid是可以采用cookie来存储的,使用cookie存储sessionid。但是cookie是可以被设置禁用的,所以还需要别的方式来保证这样的交互。一种方式是URL重写的技术,就是将sessionid直接写到url的后面,另一种是隐藏表单的方式,就是添加一个隐藏字段。浏览器一般是采用会话cookie实现的,所以浏览器关闭了,sessionid就消失了。

cookie是保存在客户端的,而session又是通过cookie实现的

 
posted @ 2014-04-02 23:06  EchoLee  阅读(490)  评论(0编辑  收藏  举报