封装一个 cookie 功能

华为S5700三层交换机VLAN配置避坑指南:为什么你的VLAN间无法互通? 本文针对华为S5700三层交换机VLAN间无法互通的典型故障,提供深度排障指南。文章从数据转发原理入手,系统梳理了从物理链路、VLAN配置、VLANIF接口状态、路由表到ARP表、MTU及安全策略等全链路检查点,并给出了清晰的排查命令与流程,帮助网络工程师快速定位并解决VLAN间路由问题,实现稳定互通。 阅读详情

在这里插入图片描述


阅读原文


cookie 概述

由于浏览器无状态的特性,cookie 技术应运而生,cookie 是一个会话级的存储,用于某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密),通过访问某些服务器而特定携带的存储信息,不支持跨域,在浏览器清空缓存或超过有效期后失效。


JavaScript 中的 cookie

在 JavaScript 中操作 cookie 通过 document.cookie 来实现:

// 操作 cookie
document.cookie = "key1=value1; key2=value2; path=/; domain=pandashen.com";

在传递 cookie 过程中,使用上面这样的方式对于参数的传递和拼接都是不太方便的,下面我们来封装一个自己的 cookie 功能。


封装一个 cookie 模块

1、整体思路设计

(function() {
    var kvTool = {
        maxage: "max-age",
        path: "path",
        domain: "domain",
        secure: "secure"
    };

    function setCookie() {}

    function getCookie() {}

    var cookieUtil = function() {};

    window.cookieUtil = cookieUtil;
})();

我们封装了一个自执行函数,在内部将 cookie 基本参数的键名存入 kvTool 对象当中设计的 options 参数的键名一一对应,并单独声明一个设置 cookie 的方法 setCookie 和获取 cookie 的方法 getCookie,最后用函数表达式的形式声明一个 cookieUtil 暴露给全局作用域。

2、setCookie 方法的实现

(function() {
    var kvTool = {
        maxage: "max-age",
        path: "path",
        domain: "domain",
        secure: "secure"
    };

    function setCookie(k, v, options) {
        if (!options) {
            document.cookie = k + "=" + v;
        } else {
            var tmp = [];
            for (var key in options) {
                // { path='/', domain='pandashen.com' }
                tmp.push(kvTool[key] + "=" + options[key]);
            }
            document.cookie = k + "=" + v + "; " + tmp.join("; ");
        }
    }

    function getCookie() {}

    var cookieUtil = function() {};

    window.cookieUtil = cookieUtil;
})();

setCookie 方法的有三个参数:

  • k:cookie 发送信息的键
  • v:cookie 发送信息的值
  • options:cookie 的基本参数

当没有传入基本参数 options 的时候直接将 cookie 发送信息的键值拼接赋值给 document.cookie。

传入基本参数 options 的时候取出 kvTool 真正的键名,并和 cookie 发送的信息的键值拼接成 k=v; k=v 形式的字符串赋值给 document.cookie。

3、getCookie 方法的实现

(function() {
    var kvTool = {
        maxage: "max-age",
        path: "path",
        domain: "domain",
        secure: "secure"
    };

    function setCookie(k, v, options) {
        if (!options) {
            document.cookie = k + "=" + v;
        } else {
            var tmp = [];
            for (var key in options) {
                // { path='/', domain='pandashen.com' }
                tmp.push(kvTool[key] + "=" + options[key]);
            }
            document.cookie = k + "=" + v + "; " + tmp.join("; ");
        }
    }

    function getCookie(k) {
        var strCookie = document.cookie;
        // 形如: 'k=v; k=v; k=v; k=v'
        var kvs = strCookie.split(";").map(v => v.trim());
        var objCookie = {};

        kvs.forEach(v => {
            var kv = v.split("=");
            objCookie[kv[0]] = kv[1];
        });

        return objCookie[k];
    }

    var cookieUtil = function() {};

    window.cookieUtil = cookieUtil;
})();

getCookie 方法只有一个参数,即我们要获取的 cookie 的某一个属性的键,函数会将对应的值返回。

其实对外暴露的方法只有 cookieUtil,所以 setCookie 和 getCookie 都是在 cookieUtil 内部调用的。

4、cookieUtil 方法的实现

(function() {
    var kvTool = {
        maxage: "max-age",
        path: "path",
        domain: "domain",
        secure: "secure"
    };

    function setCookie(k, v, options) {
        if (!options) {
            document.cookie = k + "=" + v;
        } else {
            var tmp = [];
            for (var key in options) {
                // { path='/', domain='pandashen.com' }
                tmp.push(kvTool[key] + "=" + options[key]);
            }
            document.cookie = k + "=" + v + "; " + tmp.join("; ");
        }
    }

    function getCookie(k) {
        var strCookie = document.cookie;
        // 形如: 'k=v; k=v; k=v; k=v'
        var kvs = strCookie.split(";").map(v => v.trim());
        var objCookie = {};

        kvs.forEach(v => {
            var kv = v.split("=");
            objCookie[kv[0]] = kv[1];
        });

        return objCookie[k];
    }

    var cookieUtil = function(key, value, options) {
        if (!value) {
            // 没有传参, 得到数据
            return getCookie(key);
        } else {
            setCookie(key, value, options);
        }
    };

    window.cookieUtil = cookieUtil;
})();

cookieUtil 的逻辑为当 key 和 value 两个参数都传入时,调用 setCookie 来设置 cookie,只传入 key 时,调用 getCookie 获取 cookie 对应参数的值。

上面就是我们封装的 cookie 功能模块来帮主我们设置和获取 cookie,之所以封装这个功能最终的目的就是让我们更方便的通过 JavaScript 来操作 cookie。


uniapp:实现APP获取陀螺仪数据、加速传感器、线性加速传感器,uniApp实时监听陀螺仪【XYZ】数据及停止监听与资源释放等功能示例源码,根据需求做功能(完美兼容Android安卓、苹果ios) uniapp陀螺仪,uniapp加速传感器,uniapp线性加速传感器,APP陀螺仪数据,uniapp app 端获取陀螺仪数据示例代码,手机中获取陀螺仪的数据,uniApp实时获取陀螺仪xyz数据,android陀螺仪方向,获得陀螺仪传感器,处理传感器数据,停止监听与资源释放,Android使用陀螺仪,uniapp苹果ios陀螺仪,uni-app设备之(加速计,罗盘,陀螺仪)插件安卓/IOS APP提供了获取陀螺仪数据的能力,手机陀螺仪传感器获得手机自身旋转的角度,陀螺仪获取旋转角度,陀螺仪、加速度传感器 阅读详情

相关推荐

机械臂学习:视觉引导——绪论

视觉引导 = 定位 + 引导定位:视觉系统定位到待引导的物体引导:视觉系统引导机械臂按需要的轨迹实现一定的工艺流程(过度点:人为指定机械臂的轨迹防止碰撞)(点云匹配:解决位姿估计姿态估计的问题)无序抓取的三个核心技术:3d识别(图中的点云匹配) 抓取方法路径规划(防止机械臂的碰撞,如自身碰撞等)如果只有同一高度的平移和旋转,其实并不需要点云,用单目就可以做,但是如果涉及到物体的倾斜以及高度的变换,那就是单目力所不能及,所以就是第三种情况:平移旋转加垫高。

2303_80018785的博客 4046

Java交换map的key和value值

Java交换map的key和value值的方法介绍,并给出了详细的参考代码,一看就懂。

m0_72958694的博客 3300

初学树莓派——(九)DHT11数据传入ONENET

目录 前言 DHT11实现本地温湿度监测 DHT11.py 接线图 效果图 温湿度数据上传至ONENET 新建产品 新建设备 ONENET.py 测试 Shell脚本配置 效果图 前言 本文分部分实现温湿度上传至OneNet云平台,本地数据监测,数据上传 新建一个文件夹,文件夹内包含DHT11.py、ONENET.py、tmp_data.txt、hum_data.txt DHT11实现本地温湿度监测 DHT11.py import RPi.GPIO as GPIO

会点灯的大力水手的博客 2612

封装Cookie

1.Cookie是浏览器存储数据的一种方式,存储在用户本地,而不是存储在服务器上,是本地存储,一般会自动随着浏览器每次请求发送到服务器端,在请求Request Headers中会有一个Cookie的字段2.作用场景:1.网站的中英文切换2.利用Cookie跟踪统计用户访问该网站的习惯,可以作为了解用户行为的一种工具,以便给用户提供更人性化的使用体验3.设置Cookie不能一起设置,只能单独设置4.读取Cookie读取的是一个由名值对构成的字符串,每个名值对之间由“; ”(一个分号和跟一个空格)隔开5。Coo

m0_60997531的博客 1110

jmeter5.4.1 使用案例

jmeter主要用于接口压力测试,模拟海量请求并发访问接口 1.下载jmeter https://jmeter.apache.org/download_jmeter.cgi 2.启动jemter 双击即可 3.配置jmeter 1.先更改语言 2.创建线程组 配置线程执行规划 3.创建http请求默认值 4.创建http请求 5.创建http信息头管理器 指定 Content-Type:application/json 6.创建响应断言 7.创建察看结果数 直接点击 执行 按.

SpringHASh的博客 1221

瑞萨芯片串口配置,基于RL78芯片的串口使用配置

在这里隆重给大家介绍瑞萨编辑器CS+ for CA 的自动生成代码功能,只需要配置几个参数,就可以得到你想要的串口配置了,我现在已经忘记怎么手动配置寄存器了,哈哈。选择设置,此时将端口设置成功接下来设置时钟,根据自己的芯片所需设置相应的时钟,自己芯片是什么时钟查看数据手册和原理图可以找到。瑞萨芯片的串口配置其实和ST芯片的串口配置差不多,只是ST芯片的中文数据手册比较多,就更好配置了,找到所需要的串口配置IO口,此时将UART0 配置为引脚P61和P62,瑞萨芯片的串口配置竟然要配置串口。

qq_45315904的博客 4302

cookie的认识使用以及封装

Cookie 用于存储 web 页面的用户信息。Cookie 是一些数据, 存储于你电脑上的文本文件中。当 web 服务器向浏览器发送 web 页面时,在连接关闭后,服务端不会记录用户的信息。当用户访问 web 页面时,他的名字可以记录在 cookie 中。在用户下一次访问该页面时,可以在 cookie 中读取用户访问记录。浏览器中百度所存储的cookie信息。

weixin_52544526的博客 646

lumerical中DEVICE和MODE模块的交互使用(真的很干货!!可以自信的说网上绝对找不到比我更详细的步骤了)

几个脚本文件很重要! Lumerical仿真流程: 一、DEVICE: (1).建模并且运行完之后,在脚本提示符下键入以下脚本行以运行plotDopingProfile.lsf如图1(文件名如果索引不到的话就可以把文件直接用notepad++打开,然后把代码直接输入到device中script脚本中 如图2)脚本文件并生成下图 如图3: (图2) (图1) (图3) (2).仿真...

1万+

如何封装一个cookie?更方便的使用

在使用cookie的时候我们发现,cookie的用法不是特别方便,这里我们可以自己封装一个cookie对象,便于使用 var cookie={ getAll:function(){ var arr=document.cookie.split('; '); var obj={}; for(var i=0;i&lt...

羽公子的博客 983

遗传算法(GA)全面解析:从生物基础到工程实践

本文全面解析了遗传算法(GA),从其生物基础到工程实践应用。遗传算法模拟自然进化过程,通过选择、交叉和变异等操作在解空间中高效搜索最优解。文章详细介绍了算法的生物学基础(达尔文进化论、孟德尔遗传定律)、基本概念(种群、个体、基因等)和核心思想。重点阐述了遗传算法的数学模型,包括编码机制、适应度函数设计、遗传算子(选择、交叉、变异)以及关键控制参数。最后提供了一个完整的Python实现示例,展示了遗传算法求解函数最大值问题的具体应用。该算法具有群体搜索、概率导向、无需梯度等特点,适用于各类复杂优化问题。

qq_42212808的博客 1176

SAP中关于预测需求的重要载体:计划独立需求

预测,就是为了调节客户需求的波动、不平衡,使企业的生产计划、物料计划尽量平稳、有序的必备工具。计划独立需求,Planned Independent Requirement(PIR)是SAP系统中最常见的预测需求。

saplakes的博客 1878

教你封装cookie操作,简便你的操作

在封装之前,最好自己去试试cookie常见操作有哪些,这里我就不去尝试了。 Typescript版本 getCookie 封装这个之前我们先来看一下cookie得结构: "uuid_tt_dd=10_17080957850-1567180715184-786880; dc_session_id=10_1567180715184.873382; Hm_ct_6bcd52f51e9b3dce32bec...

qq_40566547的博客 647

黑猫带你学eMMC协议第12篇:生产状态感知(PSA)

1 概述 1.1 什么是PSA Production State Awareness (PSA) 生产状态感知 e•MMC设备可以利用其是否在生产环境中的信息,从而在现场运作时进行不同的操作。 例如,在设备低温焊接(soldering)前,将数据写入emmc,可能导致数据出错,而正在焊接期间写入数据,出错的概率可能会更大。在低温焊接之前,emmc设备可以使用一种特定的内部操作去加载内容,这样就能减少数据出错的概率,而在低温焊接后进行常规的操作就行了。 1.2 psa如何进行工作? PSA存在于emmc5.0

黑猫奥利奥的博客 4260

自定义封装一个cookie

*@params {String} key cookie的名称@params {String} value cookie的值@params {Number} time cookie的过期时间 秒*/// 设置cookie// 判断传过来time没有,设置cookie过期时间,若没有为会话级// 获取单个cookie的值')})// 删除单个cookie// 清除所有的cookie')})setItem,getItem,clear})()

tcugg的博客 586

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

vue中对Cookie的封装

在utils文件中对Cookie的设置、获取、删除进行封装 //设置cookie export function setCookie (c_name, value, expire) { // var date = new Date() // date.setSeconds(date.getSeconds() + expire) //document.cookie = c_name + ...

qq_40665861的博客 859

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

封装cookie,功能包括获取、设置、移除

封装cookie,功能包括获取、设置、移除 let Cookie = { get(key) { //console.log(key) new RegExp("(^|\s)"+ key +"=([^;]+)(;|$)").test(document.cookie) return RegExp.KaTeX parse error: Expected 'EOF', got '}' at position 26: …面正则表达式的第二个子集 }̲, // 保存的数据通过对…{key}=value;expir

qq_40321355的博客 138

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

jQuery封装Cookie

封装jQuery的cookie文件,需要使用js文件,名称为jquery.cookie.js ;(function ($, window) { $.extend({ // 添加cookie addCookie: function (key, value, day, path, domain) { // 处理默认保存的路径 // 获取文件所在路径,该路径为path let index = window.location.pathname.lastIn.

jwz934738949的博客 334

JS原生Cookie的封装

JS原生Cookie的封装

qq_43235503的博客 412

javascript 运用js设置cookie,读取cookie,删除cookie;以及封装cookie

javascript 运用js设置cookie,读取cookie,删除cookie;以及cookie的封装

京都玩家 942

使用JAVA类对Cookie的简单操作进行封装

使用JAVA类对Cookie的简单操作进行封装简介相关知识方法表参数表 简介 在使用JSP写web项目时,总是会和Cookie打交道,所以就封装了一个Cookie的工具类,方便每次使用,只封装了最基础的几个操作,如果有错误还请大家帮忙指正。 相关知识 Cookie详解这个写的不错 方法表 方法名 作用 addCookie(HttpServletResponse response, String key, String value, int age) 添加Cookie addCookie(

买烤麸烤饼儿的博客 370

cookie函数的封装(设置,获取,删除)

cookie函数封装(设置,获取,删除) document.cookie=“name=kgc”; document.cookie=“pass=123456;”//创建cookie值 function setCookie( name,value,date){ var dt=new Date(); dt.setDate(dt.getDate()+date);//过期日期 document.cookie...

qq_43942799的博客 269

使用原型对象封装Cookie

使用原型对象封装Cookie

G_15090528960的博客 118

JavaScript:Cookie脚本化封装的典型应用

//JavaScript:Cookie脚本化封装的典型应用//构造函数:用指定的名字和可选的性质为指定的文档创建一个cookie对象.//参数://document:保存cookie的Document对象.必需的.//name:    指定cookie名的字符串.必需的.//hours:   一个可选的数字,指定从现在起到cookie过期的小时数.//path:    一个可选的字符串,指定了

苏某人的传奇世界 1109

使用原生JavaScript封装cookie

前言 cookie设置 参数说明:  name cookie 名称,key值  value 可选,cookie 值  expire 可选,过期时间,时间戳格式  path 可选,服务器端有效路径,/ 表示整个域名有效,默认为当前设置 cookie 时页面的路径  domain 可选,该 cookie 有效的域名  secure 可选。规定是否通过安全的 HTTPS 连接来传输

longholidays的博客 469

简单封装浏览器 cookie 工具类

简单封装浏览器 cookie 工具类 目前主流浏览器一般都支持 cookie ,以下对 cookie 的操作进行简单封装,以方便使用 更多精彩 更多技术博客,请移步 asing1elife’s blog 主体封装类 import { storagePrefix } from 'assets/scripts/config/config' import { verify,...

asing1elife's blog 623
上一篇: 简单封装一个靠谱的检测数据类型模块
下一篇: 浅谈 JavaScript 原型链
Panda Shen
博客等级 码龄10年 18粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值