关于session和cookie
Posted nanhuaqiushui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于session和cookie相关的知识,希望对你有一定的参考价值。
cookie 和 session
摘自《前端大牛爱好者-一文彻底搞懂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都是些什么神?——图文加案例,不怕你不会,就怕你不看