zoukankan      html  css  js  c++  java
  • 关于session和cookie

    摘自《前端大牛爱好者-一文彻底搞懂cookie和session》

    为什么需要?

    • http协议为无状态的,因此服务器无法知道是谁在浏览网页,但某些网页需要知道用户的状态,例如登录、购物车等
    • 解决方案:隐藏表单域、url重写、cookie和session

    关于cookie

    • cookie是服务器传给客户端并保存在客户端的一段信息
    • 服务器将一些key/value键值对返给客户端浏览器,并添加一些限制条件
    • 条件符合时,该用户在下次访问这个服务器时,数据通过请求头被完整的带回服务器
    • 服务器根据这些信息判断不同的用户
    • cookie有大小和数量限制,客户端和服务器传输量越大,cookie越多

    cookie分类

    • 会话级cookie:浏览器关闭之后Cookie失效
    • 持久级cookie:保存在硬盘的cookie,只要设置了过期时间就是硬盘级别cookie

    关于session

    session是基于cookie来工作的。服务器与客户端之间每次不必传输所有cookie值,而是传递一个代表不同cookie的唯一id.服务器端将cookie值与唯一id统一维护,通过id的传递就可以准确检索到对应的cookie值,既解决了服务器与客户端之间传递用户信息的需求,又解决了cookie传输量过大的引起的性能问题以及cookie泄露等安全问题。

    传递session的方式

    • 通过url传递sessionId
    • 通过cookie传递SessionId
    • 通过ssl传递sessionId
    • 通过隐藏表单传递sessionId

    session工作原理

    • 创建session
    • session保存
    • session的销毁:session的生命周期是从创建到超时过期,浏览器关闭只是关闭了会话级的cookie,而sessionid对应的session并没有被销毁。

    两者异同

    • Session和Cookie都是为了让http协议有状态而存在
    • Session通过Cookie工作,Cookie传输的SessionID让Session知道这个客户端是谁

    不同点

    • Session将信息保存在服务器中,Cookie将信息保存在客户端中

    session工作流

    • 浏览器第一次访问服务器时,服务器创建Session
    • 通过Cookie将SessionID带给浏览器保存在客户端
    • 服务器根据业务逻辑将相应的客户端信息保存在session中
    • 客户端再访问时上传cookie
    • 服务器得到cookie中的sessionID,来维护存在session中的客户端信息。
  • 相关阅读:
    社区专家谈 12306
    一致性Hash算法(分布式算法)
    ASP.NET二级域名站点共享Session状态
    树莓派2 安装 win10Iot 和 Ubuntu mate
    Maven运行时异常java.lang.UnsupportedClassVersionError的解决方案
    Ubuntu安装steam游戏平台的解决方案
    Spring配置JNDI的解决方案
    Intellij Idea无法从Controller跳转到视图页面的解决方案
    电话激活windows server 2012的解决方案
    如何下载Red Hat Enterprise Linux系统
  • 原文地址:https://www.cnblogs.com/nanhuaqiushui/p/11832081.html
Copyright © 2011-2022 走看看