cookie技术和session技术

引言

HTTP是一种无状态的协议,采用的是“连接-请求-应答-关闭连接”模式,当客户端发出请求的时,服务器才会建立连接,一旦客户端请求结束,服务器便会中断连接,不会一直与客户端保持连接,当下一次发起请求时,服务器会把这个 请求看成是一个新的连接,与之前的请求无关,但是在交互式的web应用中,保持状态是非常重要的,一个有状态的协议可以用来帮助在多个请求与响应之间实现复杂的业务逻辑。会话跟踪技术就是一种在客户端与服务器间保持HTTP状态的解决方案。主要有cookie技术,session技术,url重写技术,隐藏表单域技术。

Cookie技术

Cookie技术是一种在客户端保持会话跟踪的解决方案。Cookie是指某些网站为了辨别用户身份二存储在用户端上的文本信息(当然通常是经过加密的),cookie在用户第一次访问服务器时,由服务器通过响应头的方式发送给客户端浏览器,当用户再次向服务器发送请求时恢复带上这些文本信息。通过cookie,服务器在接收到来自客户端浏览器的请求信息时,能够在通过分析请求头的内容从而得到用户端特有的信息,从而动态生成与该客户端相对应的内容,比如有些网站根据用户的喜好,进行个性化推送,这些都可以通过客户端的cookie实现。

Cookie的缺点主要集中在安全性和隐私性上:
1、Cookie可能被禁用,当用户非常注意个人隐私保护时,很可能会禁用客户端的cookie功能。
2、Cookie是与浏览器相关的,即使是访问同一个页面,不同的浏览器保存的cookie是不可以相互访问的,
3、Cookie可能被删除,因为cookie是保存在硬盘上的文件,所以有删除的功能,想要抹除客户端在网站的访问记录,就可通过删除cookie的方式达到。
4、cookie的大小和个数是受限制的,单个cookie保存的数据不可以超过4KB,很多浏览器都限制一个站点最多保存20个cookie
5、cookie安全性不够高,所有的cookie都是以纯文本的形式记录在文件中,所以要是保用户名和密码,最好是通过加密的。

Session技术

Session技术是指使用HttpSession对象实现会话跟踪技术,是一种在服务器端保持会话跟踪的方案HttpSession对象是javax.servlet.http.HttpSession接口的实例,也称之为会话对象,该对象用于保存单个用户访问时候的信息,是服务器在无状态HTTP协议下用来识别和维护具体的某个用户的主要形式。HttpSession对象会在用户第一次访问服务器的时候由容器创建(当然只有在访问JSP,Servlet等程序时才会创建,访问HTML,IMAGE等静态资源的时候是不会创建的)当用户调用其失效方法(invalidate()方法)或者是超过其最大不活动时间就会失效,在此之间用户与服务器之间的多次请求都属于一次会话
Session的优缺点:

  1. Session过多时会消耗服务器资源
  2. 服务器实现的 session 复制或 session 共享, 致命缺点:不好扩展和移植

猜你喜欢

转载自blog.csdn.net/Clown_pan/article/details/84972788