美文网首页
Cookie与Session

Cookie与Session

作者: 旦暮何枯 | 来源:发表于2019-03-18 10:29 被阅读0次

会话

会话是一种持久网络协议,在用户(或用户代理)端和服务器端之间建立关联,从而起到交换数据包的作用机制。

Cookie

会话数据保存在浏览器客户端

  • 会话数据
  • 保存在客户端
  • key-value 形式

工作流程

识别返回用户包括三个步骤:

  • 服务器脚本向浏览器发送一组 Cookie。例如:姓名、年龄或识别号码等。
  • 浏览器将这些信息存储在本地计算机上,以备将来使用。
  • 当下一次浏览器向 Web 服务器发送任何请求时,浏览器会把这些 Cookie 信息发送到服务器,服务器将使用这些信息来识别用户。

cookie 的生命周期

会话周期:
cookie 数据保存在内存中,浏览器关闭后,会话失效。

setMaxAge 设置 cookie 有效期;默认 30 min
cookie 数据保存在硬盘中,浏览器关闭后依然后效,直到超出有效期

cookie 缺陷

大小和数量的限制:
一般每个站点最多保存 20 个。大小在 4k 以内。

数据安全性:
http 中的 cookie 为明文传递。

Session

会话数据保存在服务器端
session 在不同场合有不同的定义,此文主要为 HttpSession.

工作原理

  • 客户端发送一条 http 请求到 服务器端;
  • 服务器端生成一个 Session 对象,保存一些客户端数据到 Cookie 并与 SessionId 绑定,返回给客户端;
  • 客户端再次发送一条包含 SessionId 的 http 请求,服务器端根据 SessionId 与服务器端保存的对象绑定。

Session 的生命周期

setMaxInactiveInterval 设置有效期;默认 30 min
主动调用接口使 session 失效; invalidate 接口。

session.setMaxInactiveInterval(2 * 60); // 设置 session 失效时间
session.invalidate();//调用 session 失效接口

通过部署描述符配置有效期

部署描述符设置 session 失效时间;单位 min

<session-config>
        <session-timeout>2</session-timeout>
</session-config>

总结

cookie:

  • 明文存储 客户端
  • 生命周期累计时间
  • 每个站点 20 个 cookie,单个小于 4k
    session:
  • 存放服务器端
  • 生命周期间隔时间
  • 存放于服务器端,避免大容量对象存储

项目地址:https://github.com/wengfe/JAVA/tree/master/COOKIEPROJECT

相关文章

网友评论

      本文标题:Cookie与Session

      本文链接:https://www.haomeiwen.com/subject/kaweyqtx.html