Cookie和Session的比较

Cookie

Cookie是一种弥补HTTP协议无状态连接的不足的机制,使得服务器能够在两次HTTP请求的空白期中,能通过下一次上传Cookie中的数据,跟踪用户行为,保持状态。

Cookie由服务端存储到客户端,并且每次HTTP请求,会通过HTTP协议的请求头发送给服务端的将客户端的数据发送给服务端使用;

Cookies是一种基于客户端的机制,客户端上Cookie直接存储了所有的信息;

Cookie的格式:Cookie:键名:键值;键名:键值;...

Cookie: PHPSESSID=298zf09hf012fh2; csrftoken=u32t4o3tb3gg43; _gat=1;

Cookie的可选属性:

 属性名格式  含义
Expires 时间戳最长有效时间
Max-Age 时间秒数失效之前经过的秒数
Domain 子域名可以送达的主机名
Path URL路径表示指定路径才可以发送Cookie
Secure 布尔值为True时只支持安全的HTTPS协议
Httponly 布尔值HTTP以外的方式都不能对Cookie进行访问
SameSite Strict Lax服务器设定一则 cookie 不随着跨域请求一起发送,
防范跨站请求伪造攻击(CSRF)

JavaScript中对Cookie的操作:

读取:

var a = document.cookie

 

写入:

document.cookie='name=xiaoming';

值得注意的是:在JavaScript中写入cookie的值是默认追加,而不是覆盖原来的值.

                          当带有中文的时候,需要用escape()转化为URL编码。

要删除一个Cookie可以设定过期时间为一个已经过去的值:

var date=new Date(); //获取当前时间 
date.setTime(date.getTime()-10000);//将date设置为过去的时间 
document.cookie="name=xiaoming;expire="+date.toGMTString();

获取一个Cookie的值:

function getCookie(name){ 
         var strCookie=document.cookie; 
         var arrCookie=strCookie.split("; "); 
         for(var i=0;i<arrCookie.length;i++){ 
               var arr=arrCookie[i].split("="); 
               if(arr[0]==name){
                    var res=arr[1]
            }               
         } return res;          
}

Session

Session也是一种保持状态跟踪用户行为的机制。

Session是一种基于服务端的机制,是服务端为当前用户创建一个session对象,每个session对象,对应的是服务端的一段信息。

Session是一种会话级别的存储信息,每次退出浏览器都会清空。

JavaScript中对Session的操作:

保存数据:

sessionStorage.setItem('key', 'value');

获取数据:

var data = sessionStorage.getItem('key')

删除数据:

sessionStorage.removeItem('key');

删除所有数据:

sessionStorage.clear();

Cookie和Session的对比:

1.存储方式。Cookie信息存储在客户端,Session信息存储在服务端。

2.安全性。客户端的信息永远不可信,当存储重要的隐私信息的时候,Session更加安全。

3.存储量。Cookie存储的信息不能超过4kb,并且一般浏览器会限制一个站点不能存储超过20个Cookie。而Session没有这个限制。

4.生命周期。​Cookie可以设置过期时间,在时间到期之前关闭浏览器再次打开依然能生效。Session在浏览器关闭后就会销毁。

5.对服务端影响。session的信息存储在服务端,会对服务端性能产生影响,当考虑到服务端性能而存储的数据又不是很重要的时候,Cookie是一个更好的选择。会缓解服务端的压力。

外链:https://slartbartfast.cn/articlePage.php?articleid=257

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值