关于cookie的⼀些知识总结
前⾔
本次主要围绕以下四个问题进⾏总结?
1.什么是cookie?
5.如何使⽤cookie?增删改查?
1.什么是cookie?
是⼀个在浏览器端的存储空间
HTTP协议本⾝是⽆状态的。什么是⽆状态呢,即服务器⽆法判断⽤户⾝份。Cookie实际上是⼀⼩段的⽂本信息(key-value)。客户端向服务器发起请求,如果服务器需要记录该⽤户状态,就使⽤response向客户端浏览器颁发⼀个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该⽹站时,浏览器把请求的⽹址连同该Cookie⼀同提交给服务器。服务器检查该Cookie,以此来辨认⽤户状态。
举例: 我们去银⾏办理储蓄业务,第⼀次给你办了张银⾏卡,⾥⾯存放了⾝份证、密码、⼿机等个⼈信息。当你下次再来这个银⾏时,银⾏机器能识别你的卡,从⽽能够直接办理业务。
1.按照域名存储
哪⼀个域名下存储的数据,就只能在哪⼀个域名下读取
2.存储⼤⼩的限制
官⽅:4KB左右⼤约50条(key=value)
私⼈:150条左右
3.存储的数据类型
只能存储字符串类型
只要cookie空间有数据,你发送的任何⼀个请求,都会携带cookie⾥⾯所有的数据
默认时效是会话级别的,关闭浏览器会⾃动删除cookie⾥⾯所有的数据
前端JS可以操作cookie
任何⼀个后端语⾔都可以操作cookie
当⽤户第⼀次访问并登陆⼀个⽹站的时候,cookie的设置以及发送会经历以下4个步骤:
第⼀步:客户端发送⼀个请求给服务端
第⼆步:服务端返回⼀个Httpresponse响应给客户端,并且其中包含set-cookie的头部
第三步:客户端保存了cookie,之后再向服务器发送httprequest请求时,会包含⼀个cookie的头部
第四步:服务端返回数据给客户端
5.如何使⽤cookie?
1.前端存储语法
基本存储语法:kie=“key=value”;
特点:
@⼀次只能设置⼀条
@设置的cookie是由路径限制
上级⽬录设置的cookie,下级⽬录可以获取
下级⽬录设置的cookie,上级⽬录不可以获取
@默认设置的都是会话级别的时效性
设置⼀个带有时效性的cookie
在本条cookie设置的时候,在后⾯添加⼀个修饰的内容
语法:kie=“a=100;expires=”+时间对象
设置cookie过期时间的时候的时间节点问题
1.我们是在使⽤js的⽅式设置cookie
2.js拿到的时间是终端时间,将⼀个时间对象设置给cookie的时候,不管设置什么时间cookie都会当做世界标准时间使⽤
问题:
假如拿到⼀个时间是14:30:00
这个14:30:30是中国标准时间
当你将这个事件设置给cookie的时候,cookie会将它作为世界标准时间来使⽤
解决:
我们可以将设置给cookie的时间向前调整8个⼩时
const time =new Date();
time.Time()-1000*60*60*8);
//现在设置的时间就是中国的时间,如果你想设置cookie的时效性,
//那就在这个基础上增加你要设置多长的时间
2.前端获取cookie
语法:kie
拿到cookie空间中的所有内容
格式:key1=value1;key2=value2;key3=value3
注意:是把完整的cookie全部拿出来
selenium获取cookie我们需要⾃⼰解析cookie
问题1:我们把cookie字符串转换成什么样⼦的数据类型最好(⽅便将来的查询)
对象:{key1:value,key2:value}
问题2:如何转换
1.把字符串切开,split(“; ”)
2.循环遍历
3.再⼀次将每⼀项切开
4.把每⼀项切割好的。【0】当做对象的key,【1】当做对象的value
let s = kie;
let s1 = s.split("; ");
var obj ={}
var res;
for(let i =0; i < s1.length; i++){
res = s1[i].split("=");
obj[res[0]]= res[1];
}
console.log(obj);
//cookie设置的封装
function setCookie(key,value,expires){
if(expires === undefined){
return;
}
const d =new Date();
d.Time()-1000*60*60*8+1000*expires); kie = key +"="+ value +";"+"expires="+d; }
//cookie获取的封装
function getCookie(key){
var obj ={};
var s = kie.split('; ');
for(var i =0; i < s.length; i++){
const s1 = s[i].split("=");
obj[s1][0]=s1[1];
}
//根据传⼊的key的值来判断返回值是什么?
if(key === undefined){
//如果key什么都没有传,那么表⽰获取全部
return obj;
}else{
//如果传了,表⽰获取某⼀条具体的cookie的值
return obj[key];
}
}
/
/封装删除cookie
function delCookie(key){
//将时效性改为运⾏前⼀秒
setCookie(key+‘ ’,-1)
}
4.后端操作cookie
语法:setcookie(key,value,expires)expires:使⽤秒
后端获取时间:time()
setcookie("name","jcm",time()+10);
后端获取语法:
$COOKIE[key];
好了,这就是本次分享的主要内容了。谢谢
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论