cookie与localstorage和sessionstorage的区别比较
保存位置:
三者均保存在浏览器端,且同源的。
与服务器的关系:
cookie 数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递。
sessionStorage/localStorage:不会自动把数据发给服务器,仅在本地保存。
路径(path)概念:
cookie数据有路径(path)的概念,可以限制cookie只属于某个路径下。
存储大小限制:
cookie 数据不能超过4K,因为每次http请求都会携带cookie,因此cookie只适合很小的数据。
sessionStorage/localStorage 也有存储大小的限制,但比cookie大很多,可以达到5M或者更大。
数据有效期:
cookie 在设置的cookie过期时间之前一直有效。
sessionStorage:仅在当前浏览器窗口关闭前有效。
localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用于持久数据。
作用域不同:
cookie 在所有同源窗口中都是共享的。
sessionStorage:不在不同的浏览器窗口中共享,即使是同一个页面。
localStorage:在所有同源窗口中都是共享的。
sessionStorage和localStorage是html5中web storage的两种存储方式,与cookie相似,区别是它是为了更大的容量存储设计的。cookie大小受到限制,并且每次都请求一个新的页面的时候后cookie都会被发送过去,另外cookie还需要制定作用域,不可以跨域调用。
cookie的作用是与服务器进行交互,作为HTTP规范的一部分存在,而web storage是为了本地存储数据而生。有了本地数据,就可以避免数据在浏览器和服务器之间不必要的来回传递。
同源的判定:
http://www.test.com
https://www.test.com (不同源,协议不同)
http://my.test.com (不同源,主机名不同)
http://www.test.com:8080 (不同源,端口不同)