初识cookie

378 阅读2分钟

首先给自己来个扫盲吧

  1. 前端:通过浏览器跟用户交互;
  2. 后端:负责提供数据和数据交互;
  3. cookie: 位置:在控制台的Application->Storage->Cookies
  4. cookie: 前端用来存储内容的区域(刷新后,通过document.cookie 仍然还可以看到之前添加到 cookie 里面的内容,不会因为刷新而丢失)。后端可以操作前端的cookie;后端也可直接种植cookie到前端
  • 可以通过 document.cookie 获取大部分cookie(另外的一小部分是前端无法操作的)

由于cookie 一般都是以键值对的方式存储的,并且每个cookie 值之间都是以 ‘; ’ 结尾,故可以来个小正则给匹配一下; 下面来一个小小的获取cookie的方法

function getCookie(key){
    let str = document.cookie,
        reg = new RegExp(`${key}=([^; ]+)`),
        res = str.match(reg);
    return res ? res[1] : null;
}
getCookie('name'); // 返回值就是 name 属性名对应的属性值

cookie 也可以自己设置

// key 要设置的属性名
// value 对应的属性值
// date 对应的过期日期
function setCookie(key, value, date){
    // 若日期存在,则设置好过期日期
    if(date){
        document.cookie = `${key}=${value}; expires=${new Date(date)}`;
    }else{
        document.cookie = `${key}=${value}`;
    }
}

删除cookie: 只要让 expires 过期日期失效(即这个cookie 已经过期了),那么浏览器会自动删除这个cookie

function removeCookie(key){
    document.cookie = `${key}=null; expires=${new Date(100)}`;
}
  1. cookie的大小有限制,不同浏览器不一样 大概是在5k左右;会随着请求发送给后端;

  2. session: 这是一个后端存储 也就是 后端的cookie ; cookie--》浏览器; session--》服务器

  3. 在H5之后,又新增了 localStorage 和 sessionStorage 这两个存储空间;大概是在5M左右 只能前端操作 后端操作不了;不会随着请求发给后端;

  4. localStorage存储的内容,若不主动清除,那么将会永远存在;

  5. localStorage.getItem(属性名) 是用来获取对应的localStorage属性;

  6. localStorage.setItem(属性名,属性值)用来设置 localStorage;属性值必须是字符串,若不是,则会默认调用自己的toString转成字符串

  7. 在工作中,我们一般会使用JSON.stringify(属性值) 处理引用数据类型;当我们获取的时候,需要再用JSON.parse转成对象;

  8. localStorage.removeItem(属性名):删除对应的属性;

  9. localStorage.clear():删除所有的属性

  10. sessionStorage 的api 等同于localStorage;这两者的区别在于:localStorage永远不会清除,sessionStorage会在浏览器关闭的时候自动清除

暂且到这儿吧,欢迎各位大佬指正补充