- 目录
- 1.前言
- 2.出现缘由
- 3.本质区别
- 3.1存储位置及存储大小
- 3.2存储时间问题
- 3.3安全性
- 4.总结
1.前言
作为web开发者,我们经常会使用到session和cookie,而且在面试的时候,面试官也会提到这两者的区别是什么?使用了那么多次,我希望从使用到本质,探讨一下它们的情况。
2.出现缘由
我们来思考这样一个场景,如果在网页开发中,有个变量我们需要长时间使用,可能在下次登录到这个页面的时候还能使用,那么它们的价值就体现出来了,他们能够保存我们所需要的数据而不需要经常性调用数据库去获取。
3.本质区别
3.1存储位置及存储大小
cookie以文本格式存储在浏览器上,存储量有限,只允许4KB;而session会话存储在服务端,可以无限量存储多个变量;所以session比cookie更安全。
3.2存储时间问题
session在网站关闭后就表示会话结束,因此无法做到长时间保存;而cookie保存在浏览器上,可以做到长时间的保存。
PS:但是需要注意的是,用户能够在浏览器上禁用和编辑cookie,因此一定不要将敏感信息存放,以防泄露;当cookie被浏览器禁用,可以通过URL参数形式传递cookie。
3.3安全性
除了3.2小节中谈到的用户可对cookie编辑和禁用外,还用一点就是session在与客户端连接时会生成对应的session-id,而cookie则没有,但是客户端获取Session需要通过Cookie传递SessionId,所以Cookie就是客户端与Session的中间桥梁。
4.总结
Cookie
- 数据存储在浏览器端,文本形式,存储量最大4KB
- 特点:方便与javascript交换数据,方便获取用户信息
- 风险:浏览器可能会禁用cookie
- 替换方案:URL参数
Session
- 数据存储在服务器上,无限量存储多个变量
- 特点:高效安全,不依赖浏览器环境,服务端为每个用户通过sessionID标识