Cookie
工作流程:cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提醒浏览器按照指示生成相应的cookie;cookie的使用是由浏览器按照一定的原则自动发送给服务器。(通俗地说,当你第一次浏览某个网站的时候,该网站的服务器就会传递一个cookie放在你的计算机的内存上,这个cookie会记录你在该网站上的一些操作,当你下次再次登录这个网站的时候,服务器就会去看看有没有你上次留下来的cookie资料,有的话,服务器就可以根据你的cookie判断使用者),每个HTTP请求都会带上cookie 的信息,所以cookie会随着每一次请求,在客户端和服务端之间传递。
cookie的内容主要包括:名字,值,过期时间,路径和域
特性:cookie非常小,容量只有4kB,很多浏览器限制一个站点最多保存20个cookie , cookie机制是采取客户端保持状态的方案;如果是浏览器生成的cookie,当关闭浏览器窗口,cookie就会消失。
Session
session机制是服务器端机制,session是保存在服务器端的。
创建session:需要session id(session标识 ,保存在客户端),当程序需要为某个客户端的请求创建一个session时,它会先检查HTTP请求里是否包含session id ,有说明以前已经创建过了,服务器就会检索session 出来使用,如果没有找到就再重新创建一个session和相关联的session id ,session id将会返回到客户端保存。交互的时候就把session id 发到服务器,通过session ID来区分不同用户。关闭浏览器不会导致session id消失。
session 和cookie的区别:
1、session在一定时间内是保存在服务器的,cookie是保存在客户端的
2、session如果占据太多内存会给服务器服务性能造成一定的负担。cookie保存的数据有限
3、session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。
4、session保存的是对象,cookie保存的是字符串类型的键值对。
建议:一些比较重要的信息,如用户登录信息等保存在session ,一些操作信息保存在cookie。
Local Storage
描述:local storage是HTML5标准中加入的新技术。
特性:local storage 是在客户端生成的,大小大概有5M,本地存储,不会发送到服务器上。会永久保存,除非用户自己清除掉。
应用场景:一般实现购物车功能。
Session Storage
描述:local session 和local storage 一样,都是在客户端生成的,大小也是5M,本地存储,不会发送到服务器上。 不同的是session srorage会在session结束之后销毁。
cookie、 local storage和session storage的共同点:
1、三者都是保存在客户端的
2、三者保存数据的形式都是字符串键值对