首页 > 其他分享 >Cookie的属性-3 与 Cookie 的封装-1

Cookie的属性-3 与 Cookie 的封装-1

时间:2023-03-21 19:26:09浏览次数:45  
标签:set 封装 name get cookieText Cookie path 属性

Cookie的属性-3     

  Cookie的名称(Name)和值(Value)  
  失效(到期)时间
  Domain 域
  Path路径
  HttpOnly

    设置了 HttpOnly  属性Cookie 不能通过JS去访问  
  Secure  安全标志

     Secure限定了只有在使用了Https而不是http的情况下可以发送给服务端

    Domain、path、Secuer 都要满足条件,还不能过期 Cookie 才能随着请求发送到服务器端

          

    

Cookie 的封装-1

    封装Cookie

      set

      get
      remove  

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Cookie的封装</title>
</head>
<body>
    <script type="module" src="js/cookie.js">
      import{set,get,remove} from './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'));                        
    </script>
</body>
</html>

 

// 写入
export const set = (name, value, { maxAge, domain, path, secure } = {}) => {
 
    let cookieText = `${encodeURIComponent(name)}=${encodeURIComponent(value)}`;
    if (typeof maxAge === 'nmber') {
        cookieText += `; max-age=${maxAge}`
    }
    if (domain) {
        cookieText += `; domain=${domain}`
    }
    if (path) {
        cookieText += `; path=${path}`
    }
    if (secure) {
        cookieText += `; secure`
    }
    document.cookie = cookieText
}
 
// 读取
export const get = name => {
    name = `${encodeURIComponent(name)}`;
    const cookies = document.cookie.split('; ');
    for (let item of cookies) {
        const [cookieName, cookieValue] = item.split('=');
        if (cookieName === name) {
            return decodeURIComponent(cookieValue)
        }
    }
    return undefined;
}
 
// 删除 
export const remove = (name, { domain, path } = {}) => {
    set(name, '', { domain, path, maxAge: -1 })
}

 

 

 

 

 

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

标签:set,封装,name,get,cookieText,Cookie,path,属性
From: https://www.cnblogs.com/x3449/p/17240640.html

相关文章

  • java程序当中对象属性映射
    #情景在项目当中会出现POJO(VO,BO,DTO...)对象之间的转换#解决我们常用的解决方式1.新创建一个DTO的类,然后通过对象属性赋值方法,进行操作2.通过继承基础对象类,增加额外......
  • ALLEGRO封装没有焊盘的解决方式
    1,打开PCB-LIB封装文件,出走如下     保存一个PSM文件就好......
  • javaweb-Cookie、Kaptcha、正则表达式
    资料来源于:B站尚硅谷JavaWeb教程(全新技术栈,全程实战),本人才疏学浅,记录笔记以供日后回顾由于是多个视频内容混合在一起,因此只放了第一个链接视频链接知识点1.Cook......
  • Cadence入门笔记(三):PCB封装制作
    新建文件首先打开allegro,选择新建一个Packgesymbol随后调整一下图纸的单位和边框大小扩展(把调整Extends可以把原点居中放置,原生只在左下角)为了调用之前设计好的pad文......
  • ALLEGRO封装到不进来的错误提示
    WARNING(SPMHNI-192).WARNING(SPMHNI-192):Device/Symbolcheckwarningdetected.下面一般会给出解释,继续往下看.WARNING(SPMHNI-194)WARNING(SPMHNI-194):Symbol'......
  • FormData以及封装Ajax
    FormData1.什么是FormDataFormData是Ajax2.0(XMLHttpRequestLevel2)提供的一种将form表单元素name和value组合成键值,实现表单数据的序列化,从而减少from表单元素的拼......
  • Cookie 的属性-1与Cookie的属性-2
    Cookie的属性-1Cookie的名称(Name)和值(Value)最重要的两个属性,创建Cookie时必须填写,其它属性可以使用默认值Cookie的名称或值如果包含非英......
  • Cadence16.6批量修改原理图中器件属性
    https://blog.csdn.net/cheer_me/article/details/115678835 操作步骤如下(1)选中.dsn设计⼯程⽂件—>Tools—>Exportproperties—>默认选项并点击OK。即可⽣成⼀个后......
  • 这样封装echarts简单好用
    为什么要去封装echarts?在我们的项目中,有很多的地方都使用了echarts图表展示数据。在有些场景,一个页面有十多个的echarts图。这些echarts只是展示的指标不一样。如果我......
  • 从Sql server 2008获取表字段属性信息,注释信息
    sqlserver2008获得表的注释和字段的注释selecta.name,a.object_idastable_id,b.minor_id,b.valuefromsys.tablesaleftjoinsys.extend......