会话跟踪
HTTP是一种"无状态"协定,这意味着每次客户端检索Web页面时,客户端关上一个独自的连贯到Web服务器,服务器不会主动保留之前客户端申请的任何记录.
采纳会话跟踪技术能够用来断定申请是否来自同一个客户,保留客户端与服务器之间的会话数据
四种会话跟踪技术
cookies
一个web服务器能够调配一个惟一的会话ID作为每个web客户端的 cookie,并且对于来自客户端的后续申请,服务器能够应用已接管的cookie来辨认.
具体流程:当用户通过浏览器和服务器建设一次会话后,会话ID就会随响应信息返回存储在基于窗口的cookie中,只有浏览器没有敞开,会话没有超时,下一次申请时这个会话ID又会提交给服务器让服务器辨认用户身份.
特点:
- 服务器创立保留于客户端.因而不倡议寄存敏感数据.
- 不可跨域名性
- 大小及数量无限
IE6 | IE7.8 | Opera | FF | Safari | Chrome |
---|---|---|---|---|---|
20个 | 50个 | 30ge | 50个 | 没有个数限度 | 53个 |
4095B | 4095B | 4096B | 4097B | 4097B | 4097B |
然而这可能不是一个无效的办法,因为有时候浏览器不反对cookie,例如人为禁止cookie.
HttpSession
Servlet提供HttpSession接口,该接口提供了一种对网站的跨多个页面申请或拜访的办法来辨认用户并存储无关用户的信息.Servlet容器应用这个接口来创立在客户端和服务器之间的会话.会话在一个指定的时间段内继续,能够跨多个连贯或来自用户的申请.
Session保留于服务器端.因而不要将过大的对象放在外面,即便目前的Servlet容器能够在内存将满时将Session中的对象移到其余存储设备中,然而这样势必影响性能.
Session依赖Cookie,如果Cookie被禁用,那么session也将生效.
URL 重写
在每个标识会话的URL开端追加一些额定的数据,服务器会把该会话标识符与它已存储的无关会话的数据关联起来.
URL重写可能在客户端停用cookies或者不反对cookies的时候依然可能发挥作用.
暗藏的表单字段
<input type="hidden" name="sessionid" value="12345">
当表单被提交时,指定的名称和值会被主动蕴含在GET或POST数据中.每次当客户端发送回申请时,sessionid的值能够用于跟踪不同的客户端.