一、cookie与session
共同点:
cookie和session都是用来跟踪浏览器用户身份的会话方式
区别:
1)cookie存在浏览器端,session存在服务器端
1.cookie如不设置过期时间会随浏览器的关闭而销毁, cookie是服务器发给客户端的特殊信息,cookie是以文本的方式保存在客户端,每次请求时都带上它
2.session机制:当服务器收到请求需要创建session对象时,首先会检查客户端请求中是否包含sessionid。如果有sessionid,服务器将根据该id返回对应session对象。如果客户端请求中没有sessionid,服务器会创建新的session对象,并把sessionid在本次响应中返回给客户端。通常使用cookie方式存储sessionid到客户端,在交互中浏览器按照规则将sessionid发送给服务器。如果用户禁用cookie,则要使用URL重写,可以通过response.encodeURL(url) 进行实现;API对encodeURL的结束为,当浏览器支持Cookie时,url不做任何处理;当浏览器不支持Cookie的时候,将会重写URL将SessionID拼接到访问地址后。
2)存储内容:cookie只能保存字符串类型,以文本的方式;session通过类似与Hashtable的数据结构来保存,能支持任何类型的对象(session中可含有多个对象)
3)单个cookie保存的数据不能超过4kb;session大小没有限制
二、webStorage:HTML5本地存储
提供一种在cookie之外存储会话数据的路径,提供一种存储大量可以跨会话存在的数据的机制。
webStorage与cookie的区别:
1)存储大小不同
cookie不能超过4k
localStorage、sessionStorage:5m或者更多
2)数据有效期
cookie可以设置过期时间,若不设置则会随浏览器的关闭而销毁
localStorage 一直保持,手动清除
sessionStorage 关闭页面或者浏览器就清除了
3)作用域不同
sessionStorage ==〉只能在当前页面有效
localStorage、cookie : 不同页面也会存在
4)Web storage 支持事件通知机制、可以更新数据时发送给事件监听者