HTTP是无状态协议,通过cookie信息携带到请求(request)上行HTTP请求中,从而实现了HTTP模拟有了状态。但是cookie是不加密的,可以被篡改和攻击,大小受到限制。
const ckStore = {
set: function(name, value, day) {
let oDate = new Date()
oDate.setDate(oDate.getDate() + (day || 30))
document.cookie = name + '=' + value + ';expires=' + oDate + "; path=/;"
},
get: function(name) {
let str = document.cookie
let arr = str.split('; ')
for (let i = 0; i < arr.length; i++) {
let newArr = arr[i].split('=')
if (newArr[0] === name) {
return newArr[1]
}
}
},
del: function(name) {
this.set(name, '', -1)
},
};
通过封装一个ckStore的类,用于设置、获取和删除Cookie的相关操作,便于项目的维护。对于前端开发中的用户状态管理和临时存储信息非常实用。
cookie数据存放在客户的浏览器上;session数据放在服务器缓存中。
cookie是明文,不安全,别人利用cookie可以被篡改和攻击;而session存放服务器缓存中并且加密的,其他用户看不到。
session会在一定时间内保存在服务器上。当用户访问增多,会比较占用你服务器内存,考虑到减轻服务器性能方面,使用cookie。
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie;session的密钥(cookie),可以对应可以对应无限大的数据。