Chinaunix首页 | 论坛 | 博客
  • 博客访问: 317515
  • 博文数量: 60
  • 博客积分: 2781
  • 博客等级: 少校
  • 技术积分: 600
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-23 16:42
文章分类

全部博文(60)

文章存档

2011年(33)

2010年(27)

分类: 系统运维

2011-07-04 17:56:36

日常使用的超文本传输协议HTTP是一个无状态的协议,所以对于客户端的每一次请求,服务器总认为这是一次完全地全新的请求,但是有些时候,为了提高用户的互联网体验,工程师们提出使用cookie和session来满足用户对于状态保存的需求。

cookie 是一小段文本数据,存放在客户端(浏览器之中),用户可以通过浏览器设置取消cookie的功能,每次客户端发出请求的时候,cookie连同http头一起发送给服务器,服务器只能读取是其设置的cookie,而不能读取其他服务器设置的cookie,cookie里保存了用户上次访问网站的信息,当关闭浏览器的时候,cookie并不会从客户端删除,而是根据它的过期时间来决定其存在。

session 也是一小段数据称为会话变量,它存放在服务器端,用于保存客户端和服务器端之间的连接状态,也许有人会想“服务器是如何识别哪个客户端发来的请求呢?”所以针对每一个session,都有一个唯一的ID来标识,这个sessionID默认以cookie的形式存放在客户端中,当客户端发起请求的时候,服务器读取此cookie抽取sessionID信息,以此判断请求来源。

N.B.:有人出现此种误解,只要每次关闭浏览器,则session信息便从服务器端删除,这个说法是需要纠正的,因为混淆了session(persistant)和session cookie(temporary)的概念,一般来说,session从服务器端删除是需要客户端发来的指令,即用户点击Log Out按钮,如果用户没有发来注销指令,服务器是不会自动删除session的,而是一直留在服务器端。至于之前所说的关闭即删除,那是针对的session cookie,所谓session cookie就是一个临时存储,关闭客户端则此session便被删除。

阅读(3481) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~