关于session和cookie

Posted nanhuaqiushui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于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中的客户端信息。

以上是关于关于session和cookie的主要内容,如果未能解决你的问题,请参考以下文章

cookiesession和application都是些什么神?——图文加案例,不怕你不会,就怕你不看

描述Cookie和Session的作用,区别和各自的应用范围,cookieSession工作原理

笔记 - 会话管理(cookiesession)

请求中的cookiesession和token

cookiesession和java过滤器

cookiesession的认识(仅作记录)