现在的位置: 首页 > 综合 > 正文

cookie与session以及他们的常规用途——web开发必须熟知的知识

2015年04月19日 ⁄ 综合 ⁄ 共 1586字 ⁄ 字号 评论关闭

什么是cookie?

  cookie是服务器程序存储在浏览器本地硬盘的信息。

cookie有什么特点?

  cookie采用的是键值对结构存储,只不过键和值都是字符串类型。不同浏览器下cookie个数和长度我没有去特意研究,参考了网上资料不同浏览器中Cookies的长度。因为是保存在浏览器本地,所以用浏览器调试是可以看到cookie信息。不同的服务器程序(用域名区分)有着不同的cookie域,不会出现百度拿到淘宝cookie信息的情况。不同内核的浏览器使用的不是同一个cookie域,例如IE浏览器登录了淘宝,搜狗浏览器进入淘宝是登录状态(之所以说是登录状态而不只是说同样的cookie,待我写完session再说),谷歌浏览器则是未登录状态。因为IE和搜狗浏览器同是IE内核,谷歌浏览器不是。

cookie的生命周期是什么?

  cookie的生命周期由服务器程序在生成cookie信息时候决定,没有指定过期时间则在浏览器关闭时失效,有指定过期时间则在指定时间内就算浏览器关闭重启也一样有效。

谷歌浏览器下查看cookie:

什么是session?

  session是服务器程序记录在服务器端的会话消息。

session有什么特点?

  session也是采用键值对的结构存储,键为string类型,值为任意类型,用Map表示就是Map<String,Object>。session功能依赖于浏览器的cookie功能,只有cookie没被禁止的时候session才能正常使用。cookie里面有个键值对是关联sessionid的(基于java开发的服务器对应的sessionid键名为JSESSIONID),通过sessionid来确定哪个session里面存放的是哪个浏览器用户的会话消息。

session的生命周期是什么?

  session从浏览器第一次访问服务器程序(访问静态资源不算)开始创建,当浏览器关闭时或者服务器设置的session时效过了时session过期。

如果光说cookie和session的概念、特点和生命周期,我感觉百度说的比我更详细。下面我讲讲cookie、session在开发中常用的用途,不论是在jsp、asp、php中都可以共用的思路(我猜测asp和php也有对应的实现),如果我只讲jsp,前面我就会讲得更细致更针对jsp。cookie配合session做的最多的还是自动登录,我来讲讲自动登录的实现机制。

半自动登录(每个B/S应用都少不了):

第一次访问服务器时cookie中记录下sessionid,创建了session,服务器判断session中有没有登录成功的标志(例如存放了用户id或者用户信息),如果是登录了转向需要登录权限的界面,如果没有登录则转向登录界面进行登录,登录成功了则把登录信息放入session中(例如放用户id或者用户信息)。在浏览器没有关闭或者session时效内的时候是无需重复登录的,所谓的退出登录不过是把session里面的登录标志清除掉或者让session失效等操作。之所以说他是半自动登录主要还是因为浏览器一关就需要重登。

全自动登录(部分网站为了解决浏览器关闭就需要重登而采取的措施):

  主要是利用cookie在浏览器关闭了还存在的原理来弥补session关闭了就不存在的缺陷。在session中没有已登录标志优先去查看cookie中是否存在账户信息而进行验证等流程,具体怎么判断登录根据需求来做就行了。

总结:

  cookie和session可以给用户带来方便,但是需要注意的是安全问题,不要明文存储用户的账号敏感信息存在cookie中,以及合理设置cookie和session的有效时长,还有就是session中不要存放过多东西,毕竟存放在服务器端需要占用挺多空间的,一次性的东西尽量放request里面。

抱歉!评论已关闭.