sessionStorage 、localStorage 和 cookie区别及使用

本文对比了cookie、sessionStorage和localStorage的异同,包括它们的数据存储方式、生命周期、数据大小限制等,并提供了设置、获取和删除这些存储的具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

共同点

都是保存在浏览器端,且同源的。

不同点

1、会在请求时发送到服务器,作为会话标识,服务器可修改cookie;
2、cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下,子路径可以访问父路径cookie,父路径不能访问子路径cookie;
3、存储大小,浏览器不能保存超过300个cookie,单个服务器不能超过20个,每个cookie不能超过4k;
4、生命周期:在设置的有效期内有效,默认浏览器关闭;
5、共享:cookie在同源且符合path规则的文档之间共享

sessionStorage

1、不会自动把数据发给服务器,仅在本地保存
2、生命周期:生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭了,那么所有通过sessionStorage存储的数据也就被清空了
3、共享:不同页面或标签页间无法共享sessionStorage的信息
4、大小:一般为5M

localStorage

1、不会自动把数据发给服务器,仅在本地保存
2、生命周期:除非被用户清除,否则永久保存
3、共享:相同浏览器的不同页面间(同源)可以共享相同的 localStorage(页面属于相同域名和端口)
4、大小:一般为5M
5、localStorage的修改会促发其他文档窗口的update事件

用法

设置:

document.cookie="userId=828";  //单个
document.cookie="userName=aaaa"; 

document.cookie="userId=111; userName=aaaa"; //多个

获取:

var strCookie=document.cookie;
//将多cookie切割为多个名/值对
var arrCookie=strCookie.split(";"); 
var userId;
//遍历cookie数组,处理每个cookie对
for(var i=0;i<arrCookie.length;i++){
    var arr=arrCookie[i].split("=");
    //找到名称为userId的cookie,并返回它的值
    if("userId"==arr[0]){
        userId=arr[1];
        break;
    }
} 

设置时间

//其中GMT_String是以GMT格式表示的时间字符串,这条语句就是将userId这个cookie设置为GMT_String表示的过期时间,超过这个时间,cookie将消失,不可访问
document.cookie="userId=828; expiress=GMT_String"; 

例子:设置10天后过期

//获取当前时间
var date=new Date();
var expiresDays=10;
//将date设置为10天以后的时间
date.setTime(date.getTime()+expiresDays*24*3600*1000);
//将userId和userName两个cookie设置为10天后过期
document.cookie="userId=828; userName=hulk; expires="+date.toGMTString(); 

删除
将其过期时间设定为一个过去的时间

//获取当前时间
var date=new Date();
//将date设置为过去的时间
date.setTime(date.getTime()-10000);
//将userId这个cookie删除
document.cookie="userId=828; expires="+date.toGMTString(); 

设置路径

document.cookie="userId=320; path=/shop";
//表示当前cookie仅能在shop目录下使用。 

sessionStorage

判断浏览器是否支持

if(window.sessionStorage){
    console.log('This browser supports sessionStorage');
}else{
    console.log('This browser does NOT support sessionStorage');
}

设置

sessionStorage.setItem('key', 'value');
sessionStorage.lastname="Smith";

获取

var data = sessionStorage.getItem('key');
sessionStorage.lastname

删除

 sessionStorage.removeItem('key');

清空所有数据

sessionStorage.clear();

获取长度

sessionStorage.length

localStorage

该用法与sessionStorage用法相同

浏览器兼容性

FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
localStorage43.5810.54
sessionStorage52810.54
sessionStoragelocalStorage是Web存储机制,用于在用户的浏览器中存储数据,以便在多个页面间共享。它们的主要区别在于数据持久性生命周期。Cookie也是浏览器的一部分,用于存储特定的用户数据,但它有一些重要的区别。 **sessionStoragelocalStorage区别** 1. **数据存储方式持久性**: * **Session Storage**:它是一种持久性存储机制,这意味着存储的数据会保留在用户的浏览器中,直到用户注销或关闭浏览器窗口。这意味着它适用于需要在多个页面之间保持状态的信息。 * **Local Storage**:与sessionStorage类似,Local Storage也是一种持久性存储机制,但它适用于当前页面应用程序的生命周期。一旦页面被关闭,所有的本地存储数据都会丢失。 2. **数据大小**: * **Session Storage**:它的大小通常受到浏览器的限制,具体取决于浏览器类型配置。一般来说,它可能允许存储几MB的数据。 * **Local Storage**:Local Storage的大小通常不受限制,它允许存储大量的数据,具体取决于用户的可用磁盘空间浏览器的配置。 3. **安全性**: * **Session Storage**:由于其持久性,sessionStorage可能更容易受到跨站点请求伪造(CSRF)攻击。因此,在使用sessionStorage时,需要采取额外的安全措施来保护用户数据。 * **Local Storage**:由于其生命周期较短,并且通常仅限于当前页面应用程序,因此它不太可能受到此类攻击。 **Cookie区别** Cookie是另一种存储机制,它通常用于存储用户特定的信息,如登录凭据或偏好设置。它的大小有限制(通常在4KB左右),并且可能被用户浏览器设置阻止或删除。与sessionStoragelocalStorage相比,Cookie通常具有更短的生存期特定的用途。 总的来说,选择使用sessionStoragelocalStorage还是Cookie取决于你的应用程序的具体需求。如果你的数据需要在多个页面间保持状态并保留用户在一段时间内的会话信息,那么使用sessionStoragelocalStorage可能更合适。如果你只需要存储一些临时信息并且更关心数据的可维护性大小限制,那么Cookie可能是更好的选择。请注意,Cookie主要用于浏览器端的数据存储,而localStoragesessionStorage则适用于整个浏览器环境的数据存储
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值