您的位置:首页 > 其它

Cookies和Session

2015-09-17 14:36 204 查看
http://baike.baidu.com/subview/1311/6319629.htm#viewPageContent
http://baike.baidu.com/view/25258.htm http://www.cnblogs.com/shiyangxt/archive/2008/10/07/1305506.html http://blog.sina.com.cn/s/blog_59e16a4d0100q3yn.html

一、概念

Cookies指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。

Session是基于 Web服务器的用于保持状态的方法。Session 允许通过将对象存储在 Web服务器的内存中在整个用户会话过程中保持任何对象。其中,用户会话过程是指:用户在浏览某个网站时,从进入网站到关闭这个网站所经过的这段时间。

二、工作原理

1. Cookies

Cookie分发是通过HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie。

然而纯粹的客户端脚本如JavaScript或者VBScript也可以生成cookie。

而cookie的使用是由浏览器按照一定的原则在后台自动发送给服务器的:浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置,则把该cookie附在请求资源的HTTP请求头上发送给服务器。

cookie的内容主要包括:名字,值,过期时间,路径和域。

路径与域一起构成cookie的作用范围。

若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种cookie也被称为会话cookie。

若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器间共享。

2. Session

当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,这个session id将被在本次响应中返回给客户端保存。

在客户端保存这个session id的方式通常都是采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。但是,也可以采用不依赖于cookie的方式,例如:URL重写,表单隐藏字段等。

session的内容主要包括:键和值,过期时间/超时时间,依赖于服务器的具体实现。

session的内容是保存在服务器内存中,大部分session机制都使用会话cookie来保存session id,也就是说大部分情况下,session的生命期都是浏览器会话期间。但是也不尽然,session也可以由服务器写在服务器的本地文件中,并且在客户端设置的保存session id的cookies也可以保存于硬盘上,实现session的生命周期可以不限于会话长度。

三、区别

CookiesSession
总述在客户端保持状态的方案在服务器端保持状态的方案
数据存储客户端服务器
大小限制不超过4K无限制(依赖服务器实现)
生命周期一般过期时间从几天到几个月几年不等一般为浏览器会话期间
跨浏览器可以一般不可以
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: