Cookie和Session

概述

由于HTTP协议是无状态的协议,需要用某种机制来识别具体的用户身份,用来跟踪用户的整个会话。常用的会话追踪技术是cookie和session。

cookie 就是由服务器发送给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。

具体的说:当用户使用浏览器访问一个支持cookie的网站的时候,用户会提供包括用户名在内的个人信息并且提交至服务器;接着,服务器向客户端回传相应的超文本的同时也会发回这些个人信息,当然这些信息并不是存放在HTTP响应体中的,而是存放于HTTP响应头;当客户端浏览器接收到来自服务器的响应之后,浏览器会将这些信息存放在一个统一的位置。自此,客户端再向服务器发送请求的时候,都会把相应的cookie存放在HTTP请求头中,再次发回服务器。服务器在接收到来自客户端浏览器的请求后,就能够通过分析存放在请求头的cookie得到客户端特有的信息,从而动态生成与该客户端相对应的内容。

cookie的工作流程

  1. servlet创建cookie,保存少量数据,发送给浏览器。
  2. 浏览器获取服务器发送的cookie数据,将自动的保存到浏览器端。
  3. 下次访问时,浏览器将自动携带cookie数据发送给服务器。

Session

首先浏览器请求服务器访问web站点时,服务器首先会检查这个客户端请求是否已经包含了一个session标识、称为sessionid,如果已经包含了一个sessionid,则说明以前已经为此客户端创建过session,服务器就按照sessionid把这个session检索出来使用;如果客户端请求不包含sessionid,则服务器为此客户端创建一个session,并且生成一个与此session相关联的独一无二的sessionid存放到cookie中,这个sessionid将在本次响应中返回到客户端保存,这样交互的过程中,客户端每次请求时,都会带着这个sessionid,服务器根据这个sessionid就可以找到对应的session。以此来达到共享数据的目的。session不会随着浏览器的关闭而死亡,而是等待超时时间。

Cookie和Session的区别

  • 作用范围不同,Cookie保存在客户端,Session保存在服务器端
  • 有效期不同,Cookie可设置为长时间保存,比如经常使用的默认登录功能,Session一般时效较短,客户端关闭或者Session超时都会失效。
  • 隐私策略不同,Cookie保存在客户端,容易被窃取;Session保存在服务端,安全性相对较好。
  • 存储大小不同,单个Cookie保存的数据不能超过4K;对于Session来说存储没有上限,但出于对服务器的性能考虑,Session内不要存放过多的数据,并且需要设置Session删除机制。
posted @ 2021-10-15 14:56  Cherish486  阅读(39)  评论(0编辑  收藏  举报