首页 > 其他分享 >cookie方法封装

cookie方法封装

时间:2024-07-17 16:19:36浏览次数:10  
标签:封装 string expires return vEnd cookie sKey 方法

方法封装:

/**
 * 获取cookie
 */
export function getCookie(sKey: string): string {
  if (!sKey) { return null; }
  return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null;
}

/**
 * 设置cookie
 */
export function setCookie(sKey: string, sValue: string, vEnd: any = 0, sPath: string = '/', sDomain: string = '', bSecure: boolean = false): boolean {
  if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) { return false; }
  var sExpires = "";
  if (vEnd) {
    switch (vEnd.constructor) {
      case Number:
        sExpires = vEnd === Infinity ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + vEnd;
        /*
        Note: Despite officially defined in RFC 6265, the use of `max-age` is not compatible with any
        version of Internet Explorer, Edge and some mobile browsers. Therefore passing a number to
        the end parameter might not work as expected. A possible solution might be to convert the the
        relative time to an absolute time. For instance, replacing the previous line with:
        */
        /*
        sExpires = vEnd === Infinity ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; expires=" + (new Date(vEnd * 1e3 + Date.now())).toUTCString();
        */
        break;
      case String:
        sExpires = "; expires=" + vEnd;
        break;
      case Date:
        sExpires = "; expires=" + vEnd.toUTCString();
        break;
    }
  }
  document.cookie = encodeURIComponent(sKey) + "=" + encodeURIComponent(sValue) + sExpires + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "") + (bSecure ? "; secure" : "");
  return true;
}

/**
 * 删除cookie
 */
export function removeCookie(sKey: string, sPath: string, sDomain: string): boolean {
  if (!hasCookie(sKey)) { return false; }
  document.cookie = encodeURIComponent(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "");
  return true;
}

/**
 * 检查cookie
 */
export function hasCookie(sKey: string): boolean {
  if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) { return false; }
  return (new RegExp("(?:^|;\\s*)" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(document.cookie);
}

使用方法:

cookie.setCookie('gymToken','66666666', new Date(86400000 + Date.now()))//添加
cookie.removeCookie('gymToken','/','') //删除
console.error('123123123',cookie.getCookie('gymToken')) //取值
console.error('444444',cookie.hasCookie('gymToken')) //判断

  

标签:封装,string,expires,return,vEnd,cookie,sKey,方法
From: https://www.cnblogs.com/yujiawen/p/18307685

相关文章

  • [BJDCTF2020]Cookie is so stable
    打开题目是三个页面Hint中有提示flag页面有个输入框抓包观察cookie发现多了一user就是回显内容然后猜测有模板注入漏洞就开始尝试'时代少年团队长乌萨奇的颜值一直被质疑'的文章内容如何判断对方的模板?常见模板有Smarty、Mako、Twig、Jinja2、Eval、Flask、Tornado、Go......
  • 用C#写一个方法对字符串里面的字符次数排序
    namespace_7._17day01{  publicstructMyStruct  {    publicstring_name;    publicint_count;  }  internalclassProgram  {    staticvoidMain(string[]args)    {      stringstr......
  • HTTP协议——请求封装
    请求封装在我们使用请求的使用避免不了多次请求,这样代码的重复率就会变高,我们可以将请求进行封装进而调用,不仅提高了代码的重用性也提高了代码的质量封装  internalclassHttp  {    ///<summary>    ///请求类型    ///</summary>......
  • LM2733YMF/NOPB 封装 SOT23-5 丝印S52B DC-DC电源芯片
    LM2733YMF/NOPB规格信息:制造商:TexasInstruments产品种类:开关稳压器RoHS:是安装风格:SMD/SMT封装/箱体:SOT-23-5输出电压:3Vto40V输出电流:1.5A输出端数量:1Output最大输入电压:14V拓扑结构:Boost开关频率:600kHz最小工作温度:-40C最大工作温度:+......
  • Day38.join方法
    1.join方法_作用主进程等待子进程执行完后再执行2.join方法_操作系统是创建进程,但是不会按照顺序创建3.join方法_多进程代码运行,程序运行时间大概是运行时间最长的程序,方法一4.join方法_多进程代码运行,程序运行时间大概是运行时间最长的程序_方法二,使用for循环......
  • 自动驾驶时空联合规划_基于优化方法
    自动驾驶时空联合规划:基于优化方法这是时空联合规划专栏——基于优化方法系列文章,在Frenet坐标系下已经有很多优秀成熟的优化方法解决方案,但是对于在三维空间内不管是在S-L-T空间还是在X-Y-T空间去基于优化的方法做规划都是很困难的。一方面是维度的增加会导致优化变量的......
  • Java开发手册中为什么要求集合转数组toArray时禁止使用无参方法,而使用传参长度为0的空
    场景Java中使用JMH(JavaMicrobenchmarkHarness微基准测试框架)进行性能测试和优化:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/131723751参考以上性能测试工具的使用。阿里巴巴《java开发手册》泰山版关于集合转数组时规范声明:【强制】使⽤集合转数组的⽅......
  • C语言中if、else、switch的使用方法
    目录一、if语句1、以下是if语句的语法:2、else的表达形式二、switch语句C语言程序的构建基石是三大基本结构:顺序结构、选择结构(分支)与循环结构。理解这些结构及其组合应用,有助于深入学习并减轻初学者对C语言的畏难情绪。我们可以使用以下5个函数来构成结构体:if、switch(实......
  • 恢复 iPhone 上误删除笔记的 5 种绝佳方法
    您想知道如何恢复iPhone上误删除的笔记吗?阅读本指南,了解5种简单方法,可直接或通过iTunes/iCloud备份检索iPhone上丢失或删除的笔记。iPhoneNotes应用程序提供了一种方便的方式来记录重要信息,包括文本、图片、链接和许多其他类型的信息。但是,各种原因仍可能导致iPhon......
  • C语言中for、while、do while、break、continue、goto的使用方法
    目录一、while循环二、for循环三、dowhile循环四:break和continue语句break语句continue语句goto语句今天介绍一下循环函数for、while、dowhile 然后再看一看break、continue、goto语句循环结构是必须要学习好的,几乎所有代码都会应用到循环结构一、while循环whi......