了解cookie

目录

一、定义

二、特点

1、按照域名存储

2、存储空间大小限制

3、时效性

4、 请求自动携带参数

5、前后端都可以进行操作

三、前端操作cookie

1、 设置cookie

2、 修改cookie

3、删除cookie

4、获取cookie

四、封装cookie


一、定义

cookie是一个存在于客户端的存储空间。

当你的代码运行在浏览器的时候,一部分功能是用来给页面显示的,一小部分是专门来存储一些数据的。

cookie空间里面可以以字符串的形式来存储数据,

数据格式: 必须是  key=value,多条数据中间用;分割

每一个cookie信息包含一个过期时间,过期时间就是达到时间的时候,cookie自动删除

 

二、特点

1、按照域名存储

你在哪一个域名下存储的内容,就在哪一个域名下使用,其他域名都用不了

举例:cookie就相当于工牌,你在哪个公司,就用哪个公司的工牌,只能在这个公司使用

 2、存储空间大小限制

4kb,大概能存50条数据左右

 举例:cookie就相当于工牌,一个工牌上不能记录太多东西

3、时效性

默认是会话级别的时效性,可以手动设置,例如7天后,两个小时后

 举例:cookie就相当于工牌,有临时访客的临时工牌,正式员工有正式的

4、 请求自动携带参数

当你的cookie空间里面有内容时,只要是当前域名下的任意一个请求,都会自动携带cookie,将里面的数据放在请求头里面携带给后端。

cookie里面有多少就携带多少,如果cookie没有内容就不会携带任何参数给后端。

 举例:cookie就相当于工牌,不管你的工牌上有多少信息(电话职位姓名),只要请别的部门办业务,工牌上的所有信息都可以给别人看。

5、前后端都可以进行操作

前端可以通过js操作cookie进行cookie内容的增删改查

后端也可以通过后端语言对cookie空间进行增删改查

 

三、前端操作cookie

1、 设置cookie

        // 设置cookie
        // + 不带过期时间的写法: document.cookie = 'key=value'
        // + 带过期时间,需要一些修饰信息,写法:document.cookie = 'key=value;expires=时间对象'
        // + 不管你给一个什么时间点的时间对象
        // + cookie都会当作世界的标准时间来使用
        // +因为我们是东八区 +8 所以我们要设置时间对象提前8小时

        // 设置一个默认时间的cookie --会话级时效,浏览器关闭时时效
        document.cookie = 'a=100'

        // 准备一个15秒之后过期的cookie
        let time = new Date()
        time.setTime(time.getTime() - 8 * 60 * 60 * 1000 + 15 * 1000)
        document.cookie = 'b=200;expires=' + time

2、 修改cookie


        // 修改cookie
        // 和设置cookie是一样的

        // 修改cookie
        let updata = document.querySelector('.updata')
        updata.onclick = function () {
            document.cookie = 'a=修改了'
        }

3、删除cookie

        // 删除cookie
        // + 删除cookie就是重新设置一下这个cookie
        // + 把过期时间设置成当前时间之前就可以了

        // 删除cookie
        let del = document.querySelector('.del')
        del.onclick = function () {
            let time = new Date()
            time.setTime(time.getTime() - 8 * 60 * 60 * 1000 - 1000)
            document.cookie = 'b=200;expires=' + time
        }

4、获取cookie

        // 获取cookie
        // + 直接使用document.cookie

        // 获取cookie
        console.log(document.cookie)

四、封装cookie

        封装cookie

        因为前段操作cookie比较复杂

        所以我们把前端操作的cookie的操作函数封装成函数,为了调用方便

        要封装一个设置cookie的方法:setCookie() => 用来设置,修改,删除

        要封装一个获取cookie的方法:getCookie() => 用来获取cookie

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 封装cookie
        // 因为前段操作cookie比较复杂
        // 所以我们把前端操作的cookie的操作函数封装成函数,为了调用方便
        // 要封装一个设置cookie的方法:setCookie() => 用来设置,修改,删除
        // 要封装一个获取cookie的方法:getCookie() => 用来获取cookie

        function setCookie(key, value, expires) {
            // 首先判断有没有传递过期时间

            if (expires) {
                // 准备一个时间对象
                let time = new Date()
                time.setTime(time.getTime() - 8 * 60 * 60 * 1000 + expires * 1000)
                
                // 设置我准备设置的cookie
                document.cookie = `${key}=${value};expires=${time}`
            }else{
                // 设置我准备设置的cookie
                document.cookie = `${key}=${value};`
            }
        }

        // 使用一下
        setCookie('a',12,5)
        setCookie('b',120)
        setCookie('c',120)
        setCookie('d',120)

        // 根据cookie
        function getCookie(key){
            // 准备一个字符串
            let str = ''
            console.log(document.cookie)
            let tmp = document.cookie.split('; ')//分号后面有空格
            console.log(tmp)
            tmp.forEach(function(item){
                console.log(item)
                let k = item.split('=')
                console.log(k)
                if(k[0]===key){
                    str = k[1]
                }
            })
            return str
        }
        // 
        let a = getCookie('c')
        console.log(a)
    </script>
</body>

</html>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早睡第一人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值