Cookie、sessionStorage、localStorage 的区别

210 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

Cookie、sessionStorage、localStorage 的区别

共同点:都是保存在浏览器端,并且是同源的

Cookie:cookie 数据始终在同源的 http 请求中携带(即使不需要),即cookie 在浏览器和服务器间来回传递。而 sessionStorage 和 localStorage 不会自动把数据发给服务器,仅在本地保存。cookie 数据还有路径(path)的概念,可以限制 cookie 只属于某个路径下, 存储的大小很小只有 4K 左右。 (key:可以在浏览器和服务器端来回传递,存储容量小,只有大约 4K 左右)

sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持,localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie 只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。(key:本身就是一个回话过程,关闭浏览器后消失,session 为一个回话,当页面不同即使是同一页面打开两次,也被视为同一次回话)

localStorage:localStorage 在所有同源窗口中都是共享的;cookie 也是在所有同源窗口中都是共享的。(key:同源窗口都会共享,并且不会失效,不管窗口或者浏览器关闭与否都会始终生效) 。

存储大小限制不同,cookie 数据不能超过 4K,同时因为每次 http 请求都会携带cookie,所以 cookie 只适合保存很小的数据,如会话标识。 webStorage 虽然也有存储大小的限制,但是比 cookie 大得多,可以达到5M或更大数据的。

有效期不同 sessionStorage:仅在当前的浏览器窗口关闭有效;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie:只在设置的cookie 过期时间之前一直有效,即使窗口和浏览器关闭 。

作用域不同 sessionStorage:不在不同的浏览器窗口中共享,即使是同一个页面;localStorage:在所有同源窗口都是共享的;cookie:也是在所有同源窗口中共享的。