All things are difficult before they are easy. 没有软件的裸机是一具僵尸,没有硬件的软件是一个幽灵。2012,专注于Linux和C语言,关注自动化、性能测试,关注开源社区和开源测试工具、方法,尝试测试团队管理!

Session和Cookie简介

上一篇 / 下一篇  2010-08-27 00:12:44 / 个人分类:Web知识

作为一名Web测试工程师,对Session的认识还是应该有一些的。看了《Tomcat原理与Java Web系统开发》中关于session的那个章节,简单做一下笔记吧。
HTTP协议是无状态的,于是Session和Cookie发挥了作用。服务端不能主动连接客户端,只能被动等待并答复客户端请求。客户端连接服务端,发出一个HTTP Request,服务端处理请求,并且返回一个HTTP Response给客户端,服务端与客户端交互的过程就是Session。Session是Web应用的核心,组件的生命周期、事务的管理和对象持久化都与Session息息相关,就如同在编写JDBC时需关心Connection的管理,以有效的方法创建、利用与回收Connection,以减少资源的消耗,增加系统执行效能一样,有效的Session管理也是Web应用开发时需关注的焦点。
Session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作或消息,如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称为一个Session。
当Session一词与网络协议相关联时,它又往往隐含了"面向连接"和/或"保持状态"这样两个含义,"面向连接"指的是通信双方在通信之前要先建立一个通信的渠道,如打电话,直到对方接了电话通信才能开始,与此相对的是写信,在把信发出去时并不能确认对方的地址是否正确,通信渠道不一定能建立,但对发信人来说,通信已经开始了;"保持状态"则是指通信的一方能够把一系列的消息关联起来,使得消息之间可以互相依赖。到了Web服务器蓬勃发展的时代,Session在Web开发环境下的语义又有了新的扩展,它的含义是指一类用来在客户端与服务器之间保持状态的解决方案。有时Session也用来指这种解决方案的存储结构,如"把xxx保存在Session里"。由于各种用于Web开发的语言在一定程度上都提供了对这种解决方案的支持,所以在某种特定语言的语境下,Session也被用来指代该语言的解决方案,如经常把Java中提供的javax.servlet.http.HttpSession 简称 为Session。
Cookie机制采用的是在客户端保持状态的方案。它是在用户端的会话状态的存储机制,它需要用户打开客户端的Cookie支持。Cookie的作用就是为了解决HTTP协议无状态的缺陷,而Session机制采用的是一种在客户端与服务器之间保持状态的解决方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以Session机制可能需要借助于Cookie机制来达到保存标识的目的,而Session提供了方便管理全局变量的方式。
Session是针对每一个用户的,变量的值保存在服务器上,用一个sessionID来区分是哪个用户的Session变量,这个值通过用户的浏览器在访问时返回给服务器,当客户禁用Cookie时,这个值也可能设置为由get来返回给服务器。
就安全性来说,当访问一个使用Session的站点时,同时在自己计算机上建立一个Cookie,建立在服务器端的Session机制更安全些,因为它不会任意读取客户存储的信息。
正统的Cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的 Cookie。
从网络服务器观点看,所有HTTP请求都独立于先前请求。就是说每一个HTTP响应完全依赖于相应请求中包含的信息。状态管理机制克服了HTTP的一些限制并允许网络客户端及服务器端维护请求间的关系。在这种关系维持的期间叫做会话(Session)。
Cookie是服务器在本地计算机上存储的小段文本,并随每一个请求发送至同一个服务器。网络服务器用HTTP头向客户端发送Cookies,在客户终端,浏览器解析这些Cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求附上这些Cookies。
Session tracking(会话跟踪)是指一类用来在客户端与服务器之间保持状态的解决方案,简单地说,当一个客户在多个页面间切换时,服务器会保存该用户的信息。
会话跟踪的实现方式有以下4种:
使用持续Cookies(Persistent Cookies)。
重写包含额外参数的URL(URL Rewriting)。
建立含有数据的隐藏表单字段(Hidden Form. Field)。
使用内建Session对象。
前3种会话追踪方式是传统的做法,每种做法都有缺点。最后一种方式是目前最常用,也是最有效的解决方案。

各种浏览器对于Cookie的限制,请参考:http://www.iamued.com/qianduan/1326.html

更多可参考:http://book.chinaunix.net/showart.php?id=5433

TAG: Cookie cookie Session session web Web

 

评分:0

我来说两句

smile665

smile665

Stay hungry, stay foolish. 得意之时谨记,一半命运还掌握在上帝手里;失意之时须知,一半命运还掌握在自己手里。

日历

« 2024-03-20  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 951912
  • 日志数: 220
  • 建立时间: 2008-11-06
  • 更新时间: 2012-10-06

RSS订阅

Open Toolbar