转:cookie和session(一)——原理

文章来自于:http://blog.csdn.net/half1/article/details/21645545

一、cookie和session是什么?

 
cookie是服务器留在客户端中的小文件,常用于识别用户。
当你在浏览网站的时候,web服务器会先把一小块资料放在你的计算机上,cookie会帮你在网站上所打的文字或者一些选择都记录下来,存在客户端硬盘的文本中(通常是加密的),当你下次再浏览同一网站时,web服务器会先看看有没有它上次留下的cookie,有的话,就会依据cookie里的内容来判断使用者,送出特定的网页内容给你。
cookie的使用很普遍,许多有提供个人化服务的网站,都是利用cookie来辨认用户,以方便送出用户量身定做的内容。
 
session是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过sessionID来区分不同的客户。
session是以cookie或URL重写为基础的,默认使用cookie来实现。系统会创建一个名为SESSIONID的输出cookie,我们叫做session cookie,以区别persistent cookie(平常所说的cookie)。注意session cookie是存储于浏览器内存中的,并不是写到硬盘上的。
 

二、cookie和session是用来干什么的?

 
cookie和session是用来维持状态的。
http是无状态的协议,客户每次读取 web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,为了维持用户状态,就出现了cookie和session这两种机制。
 

三、cookie和session的原理

 
cookie机制采用的是在客户端保持状态的方案。
服务器通过在HTTP的响应头中加上一行特殊的指示一提示浏览器按照指示生成相应的cookie。
 
 
session机制采用的是在服务器端保持状态的方案。
当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含一个sessionID,如果已包含则说明以前已经为此客户端创建过session,服务器就按照sessionID把这个session检索出来使用(如果检索不到,可能会新建一个),如果客户端的请求不包含sessionID,则为此客户端创建一个session并且生成一个与此session相关联的sessionID。
sessionID的是一个既不会重复,又不容易被找到规律以仿造的字符串,这个sessionID将被本次响应中返回给客户端保存。
 

四、cookie和session的区别与联系

 
1)session保存在服务器,cookie保存在客户端。
2)session中保存的是对象,cookie中保存的是字符串。
3)session不能区分路径,同一个用户在访问义工网站期间,所有的session在任何一个地方都可以访问到。而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。
4)session依赖于cookie,如果客户端完全禁止cookie,session将失效。
上一篇:Educational Codeforces Round 7 - E. Ants in Leaves


下一篇:javascript跨域获取json数据