首页 > 技术文章 > cookie

lys597 2021-04-27 17:16 原文

cookie浏览器端的本地存储空间,用来存储一些数据

特点:

  1.按照域名存储,那一个域名存储的,在当前域名下就可以访问,换一个域名就不能访问
  2.按照文件路径存储,在那个文件夹下存储的数据,只能在那个文件夹及子文件夹访问,父级文件夹目录不能访问
  3.cookie 的存储时按照字符串的形式存储 ’key=value; key=value;“
  4.存储大小4KB左右,50条左右
  5.时效性,默认是会话级别的时效(关闭浏览器就没有了)可以手动设置cookie的时效(关闭浏览器后依旧保存)
  6.操作权限,前后端都能操作
  7.请求自动携带,只要cookie空间里面有数据,那么你在发送任何一个请求的时候,自动携带
 
前端操作cookie
想要使用或者操作cookie,页面必须是在服务器上打开的
1.document.cookie
  读:document.cookie 会把cookie空间里面所有的数据全部拿出来,字符串的形式,
  写:document.cookie = 'key=value' 写入一条cookie
 
设置cookie (重点)
  1.一次只能设置一条 cookie
  2.在设置的时候,每一条的分号后面可以书写对本条cookie的描述
    expires过期时间
      如果不进行特殊设置,默认就是会话级别的时效性,你要是想修改,expires=时间对象
    path存储路径
      如果你不进行特殊设置,会按照目前的目录结构进行存储,想修改 key=value;path=你要存储的路径
  3.在设置的时候不管存储什么数据类型,都会自定转换成字符窜格式给你存储,cookie一般都是存储一些简单数据
  4.设置同名的cookie就是修改,前提是相同路径下
  5.在设置的时候,如果设置一个cookie的过期时间是当前时间以前,就是删除这条cookie,在到达过期时间的那一瞬间,这一条cookie就已经从浏览器移除了
document.cookie = 'a=100;path=/'
document.cookie = 'a=100;expires=' + new Date()
document.cookie = 'b=200;expires=Tue Aug 25 2020 17:00:00 GMT+0800(中国标准时间)'

 

封装好的设置cookie的方法

 1 /**
 2  * setCookie 设置cookie的方法
 3  * @param { STRING } key 要设置的cookie名
 4  * @param { STRING } value cookie的value
 5  * @param { NUMBER } expires 多少秒以后过期
 6  * @param { STRING } path cookie的存储路径
 7  */
 8 function setCookie (key, value, expires, path) {
 9 // 1.准备一个标准cookie内容
10 var str = key + '=' + value
11 if (expires) {
12   // 处理时间
13   var time = new Date()
14   time.setTime(time.getTime() - 1000*60*60*8 +expires *1000)
15   str += ';expires=' + time
16 }
17 if (path) {
18   str += ';path=' + path
19 }
20 document.cookie = str
21 }

封装好的获取cookie方法

 1 /**
 2  * getCookie 获取cookie的方法
 3  * @param { STRING } key 你要获取的某一个cookie的key
 4  * @returns { STRING | OBJECT } 填写参数是指定的值,不填写是对象
 5  */
 6 function getCookie (key) {
 7   var tmp = document.cookie.split('; ')
 8   var o = key ? '' : []
 9   tmp.forEach(function (item) {
10     var t = item.split('=')
11     if (key) {
12       if(t[0] === key) {
13         o = t[1]
14       }
15     } else {
16       o[t[0]] = t[1]
17     }
18   })
19   return o
20 }

 

推荐阅读