美文网首页
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