cookie的存储和定义时效

it2022-12-30  79

cookie是浏览器存储数据的一种机制

一、设置cookie cookie的时效分为: 1、会话时效 session (关闭浏览器自动删除)(默认) 2、自定义时效 document.cookie = ‘name=张三’

指定时效,只要不超过时间,cookie就会一直存在 设定一个函数,来执行带有时效的cookie; 参数一:键名 参数二:数值 参数三:时效 cookie的时效是当前时间的开始

function mySetCookie ( key , value , time ) { //获取当前时间 const nowTime = new Date( );

//获取当前时间对象的时间戳 let t = nowTime.getTime( )

//减去8小时的时间差 t = t - (86060*1000)

//加上设置时效性的时间,这个时效性就是cookie设置的时效性 t = t + time *1000

//将时间戳设置时间对象 nowTime.setTime( t )

//将时间对象设置给cookie,作为时效性

如果有时间参数,设置cookie的时效是指定的时效时间 如果没有时间时效参数,应该设定的是会话时效 通过三元运算进行判断 let a = time === undefined ? ’ ’ : nowTime ;

document.cookie = ${key} = ${value}; expires=${a};

mySetCookie(‘name’, ‘张三’, 60) }

3、cookie不只是当前页面可以看到,同源的其他页面也可以看到,一般的操作方式是 在一个页面设置好cookie,在其他页面根据cookie进行操作

4、关于cookie时效的计算 (1)JS中,所有的时间,默认都是毫秒,计算时必须按毫秒计算 (2) 服务器时间与中国时区时间,有8小时时差,如果不计算这个时差,设置60秒时效,实际是8小时零60秒时效 (3)要在当前时间继承上增加设定的时效时间 参数的时效时间是秒 * 1000 转化为毫秒 当前时间戳 - 8小时毫秒 + 时效时间的毫秒

二、获取cookie

获取当前cookie 获取到的cookie是字符串 let cookieStr = document.cookie;

定义一个函数来转化cookie字符串为对象 参数cookie字符串

const cookieObj = myGetCookie(document.cookie)

function myGetCookie (cookieStr) { //定义一个对象 const obj = { }

将cookie字符串转化为数组,根据间隔符 分号 和 空格 const arr1 = cookieStr.split(’; ') ;

循化遍历arr1 数组 ,键值对字符转的形式要转化为 键名 数值独立的形式 arr1.forEach((item)=>{ //以等号分割 键值对字符串,在定义成新的数组 const newArr = item.split(’=’); //要将 0 存储的键名 , 设定成对象的键名 //要将 1 存储的数值,设定为对象的数值 //给对象添加单元 obj[newArr[0] ] = newArr[1]; })

return obj; }

总结: 原因 : JS中只能获取到cookie字符串,必须jiangcookie字符串,转化为对象的形式, 输入键名可以获取数值

最新回复(0)