首页 > 其他分享 >Cookie的封装、Cookie的注意事项

Cookie的封装、Cookie的注意事项

时间:2023-03-24 13:11:16浏览次数:38  
标签:domain set 封装 name get Cookie 注意事项 cookie

Cookie的封装

  封装Cookie

  使用封装好的Cookie实现网站语言切换

Cookie.html页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Cookie的封装</title>
<!--    <script src="../static/js/jquery-3.6.1.min.js" type="text/javascript" charset="utf-8"></script>-->
<!--    <script src="../static/js/cookie.js" type="text/javascript" charset="utf-8"></script>-->
</head>
<body>
    <button id="cn">中文</button>
    <button id="en">英文</button>

<script type="module">
    // import{set,get,remove} from '../static/js/cookie';
    // import {set,get,remove} from '../static/js/cookie.js';
    // set('username','alex');
    // set('username','zs');
    // set('age',18);
    // set('用户名','张三');

    // set('sex','male',{
    //     maxAge:30*24*3600,
    // })

    // remove('username');
    // remove('用户名')

    // console.log(get('username'));
    // console.log(get('age'));
    // console.log(get('用户名'));
    // console.log(get('sex'));

    // 使用封装好的Cookie实现网站语言切换
    import {set} from '../static/js/cookie.js';
    const cnBtn = document.getElementById('cn');
    const enBtn = document.getElementById('en');

    cnBtn.addEventListener(
        'click',
        () => {
            set('language','cn',{
                maxAge:30 * 24 * 3600
            });
            window.location = 'Cookie.html';
        },
        false
    );

    enBtn.addEventListener(
        'click',
        () => {
            set('language','en',{
                maxAge:30 * 24 * 3600
            });
            window.location = 'Cookie.html';
        },
        false
    );
</script>

</body>
</html>

cookie.js文件

// 写入Cookie
const set = (name,value, {maxAge,domain,path,secure}
 = {}) =>{
    let cookieText = `${encodeURIComponent(name)}=
  ${encodeURIComponent(value)}`;

    if (typeof  maxAge === 'number') {
        cookieText += `; max-age=${maxAge}`;
    }

    if (domain) {
        cookieText += `; domain=${domain}`;
    }

    if (path) {
        cookieText += `; path=${path}`;
    }

    if (secure) {
        cookieText += `; secure`;
    }

    document.cookie = cookieText;

    // document.cookie='username=alex; max-age=5; domain='
};

// 通过name获取cookie的值
const get = name => {
    name = `${encodeURIComponent(name)}`;

    const cookies = document.cookie.split('; ')

    for (const item of cookies) {
        const [cookieName,cookieValue] = item.split('=');

        if (cookieName === name) {
            return decodeURIComponent(cookieValue);
        }
    }
    return;
};

// 'username=alex; age=18; sex=male'
// ['username=alex', 'age=18', 'sex=male']
// ["username","alex"]

// get('用户名');

// 根据name、domain和path删除Cookie
const remove = (name,{domain,path} = {}) =>{
    set(name,'',{domain,path,maxAge:-1});
};

export {set,get,remove};

Cookie的注意事项

  前后端都可以写入和获取Cookie

  Cookie有数量限制

    每个域名下的Cookie数量有限

    当超过单个域名限制之后,再设置Cookie,浏览器就会清除以前设置的Cookie

  Cookie有大小限制

    每个Cookie的存储容量很小,最多只有4KB左右

标签:domain,set,封装,name,get,Cookie,注意事项,cookie
From: https://www.cnblogs.com/wsfj/p/17206051.html

相关文章

  • vue-cli 初始化创建 vue2.9.6 项目路由守卫、封装axios、vuex
    阅读目录Vue如何封装Axios请求1安装axios2封装代码axios应用方式Vue中的路由守卫使用演示1全局守卫2组件级守卫3单个路由独享的守卫4官网整个路由守卫被触发流程的......
  • Linux——注意事项
    Linux中,系统识别文件并不依赖后缀,但是为了方便我们管理服务器,建议对特殊文件添加拓展名,以下就是Linux中常见(常用)的拓展名。一、特殊文件添加拓展名  1、压缩文件 ......
  • axios对后端请求统一封装及全局调用配置
     以下为个人项目笔记:  两个文件如下:文件【main.js】import{createApp}from'vue'importAppfrom'./App.vue'importrouterfrom'./router'//导......
  • ESD二极管工作原理、封装、型号、选型(详解)
    常用静电防护保护器件——ESD二极管,对于电子工程师而言,并不陌生。在消费电子、家电、智能家居、可穿戴智能设备、汽车电子、安防、工业设备等产品领域中都能看到ESD二极管靓......
  • 使用TK加速器运营TikTok的内容是什么?有哪些注意事项?
    作为一个TikTok内容创作者,使用TK加速器可以提高视频上传、编辑、发布和观看的速度,提高视频质量和流畅度,从而增加用户体验和吸引更多的粉丝。 以下是一些使用TK加速器运......
  • 企业项目中js方法的封装和使用
    1.首先呢,具体的就不细说了,也没有办法细说,我在这里,将项目中js方法的大致结构,列一下给大家。2.3._Instance={4.5.//成员变量6.modelData:{},7._this:th......
  • SSM整合——表现层数据封装
    表现层数据封装设置统一数据返回结果类注意:Result类中的字段并不是固定的,可以根据需要自行增减提供若干个构造方法,方便操作 返回结果类packagecom.cqupt.controll......
  • 爬取的数据,存到mysql中、爬虫和下载中间件、加代理,cookie,header,加入selenium、去重规
    目录0爬取的数据,存到mysql中1爬虫和下载中间件2加代理,cookie,header,加入selenium2.1加代理2.2加cookie,修改请求头,随机生成UserAgent2.3集成selenium3去重规则源码......
  • jmeter操作数据库增删改查的注意事项
    一,场景1.在jmeter造数据后,可通过数据库查询数据库是否新增数据,判断脚本执行是否成功。2.有些数据新增不可重复,因此脚本执行后需要将新增的数据删除,才能再次执行脚本。二......
  • 正则表达式注意事项
    问题正则表达式一段时间不常用就经常忘掉,这里记录一下容易忘掉的知识点。?=和?:和?!和?<=和?<!要理解?=和?!,首先需要理解前瞻,后顾,负前瞻,负后顾四个概念://前瞻:e......