日常使用的超文本传输协议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便被删除。
阅读(3494) | 评论(0) | 转发(0) |