Cookie与Session的区别
Cookie
HTTP协议本身是无状态
的,为了使其能处理更加复杂的逻辑,HTTP/1.1
引入Cookie来保存状态信息。
Cookie是由服务端
产生的,再发送给客户端保存,当客户端再次访问的时候,服务器可根据cookie辨识客户端是哪个,以此可以做个性化推送,免账号密码登录等等。
Cookie分为内存式Cookie和硬盘式Cookie:
内存式Cookie
存储在内存中,浏览器关闭后就会消失。硬盘式Cookie
保存在硬盘中,不会随浏览器的关闭而消失。
Session
当用户访问服务器,若不存在该服务器的session。服务端会创建一个Session,并返回一个session id给客户端。客户端将session id存在本地(一般存在cookie中),当客户端再次访问服务器,服务器根据cookie中的session id查找对应的session,从而查找该客户端的相关信息。
Session一般会设置销毁时间,当超过这个时间客户端都没有发起请求,就会移除该客户端对应的Session对象。
Cookie与Session的区别
Cookie | Session | |
---|---|---|
保存位置 | 浏览器端 | 服务器端 |
存储内容不同 | cookie只能存储字符串(只能保存ASCii) | session存储结构类似于hashtable结构,可以存放任何类型 |
存储大小 | cookie最多可以存放4k内容 | session没有限制 |
安全性 | 客户端的一些程序可能会窥探、复制、修改cookie的内容 | session不存放在客户端,不存在敏感信息泄露的风险 |
cookie和session的应用场景 | cookie可以用来保存用户的登录信息 | session一般存放个人信息或者购物车的信息 |
session与cookie的弊端 | cookie的大小受限制,不安全 | 当过多用户同时登录,服务器压力过大。 |