JS中如何使用cookie

最近在项目接触了很多在js中调用保存的cookie,是别人在项目的utils.js中保存了不少cookie。大多数保存的是当前登录的用户,和当前的系统,各种常用的id
1、cookie是什么:
①、cookie 是存储于访问者计算机中的变量。每当一台计算机通过浏览器来访问某个页面时,那么就可以通过 JavaScript 来创建和读取 cookie。
  ②、实际上 cookie 是存于用户硬盘的一个文件,这个文件通常对应于一个域名,当浏览器再次访问这个域名时,便使这个cookie可用。因此,cookie可以跨越一个域名下的多个网页,但不能跨越多个域名使用。
  ③、不同浏览器对 cookie 的实现也不一样。即保存在一个浏览器中的 cookie 到另外一个浏览器是 不能获取的。
PS:cookie 和 session 都能保存计算机中的变量,但是 session 是运行在服务器端的,而客户端我们只能通过 cookie 来读取和创建变量。
2、cookie的作用:
 ①、用户在第一次登录某个网站时,要输入用户名密码,如果觉得很麻烦,下次登录时不想输入了,那么就在第一次登录时将登录信息存放在 cookie 中。下次登录时我们就可以直接获取 cookie 中的用户名密码来进行登录。
PS:虽然 浏览器将信息保存在 cookie 中是加密了,但是可能还是会造成不安全的信息泄露
  ②、类似于购物车性质的功能,第一次用户将某些商品放入购物车了,但是临时有事,将电脑关闭了,下次再次进入此网站,我们可以通过读取 cookie 中的信息,恢复购物车中的物品。
PS:实际操作中,这种方法很少用了,基本上都是将这些信息存储在数据库中。然后通过查询数据库的信息来恢复购物车里的物品
  ③、页面之间的传值。在实际开发中,我们往往会通过一个页面跳转到另外一个页面。后端服务器我们可以通过数据库,session 等来传递页面所需要的值。但是在浏览器端,我们可以将数据保存在 cookie 中,然后在另外页面再去获取 cookie 中的数据。
PS:这里要注意 cookie 的时效性,不然会造成获取 cookie 中数据的混乱。
3、如何使用cookie:
①、语法
  document.cookie = "name=value;expires=evalue; path=pvalue; domain=dvalue; secure;”
  ②、对各个参数的解释
  一、name=value 必选参数
    这是一个键值对,分别表示要存入的 属性 和 值。
    比如:

document.cookie="name=中文";
//为了防止中文乱码,我们可以使用encodeURIComponent()编码;decodeURIComponent()解码
document.cookie = encodeURIComponent("name")+"="+encodeURIComponent("中文");

二、expires=evalue 可选参数
    该对象的有效时间(可选)只支持GTM 标准时间,即要将时间转换,toUTCString()(默认为当前浏览器会话有用,关闭浏览器就消失);
    比如:

 var date = new Date();
  date.setTime(date.getTime()+2000);//获取当前时间并加上 2 秒钟
  //alert(date.toUTCString());//格林威治时间 (GMT) 把 Date 对象转换为字符串,并返回结果。
  //alert(date.toGMTString());//与上面的结果一样,但是这个方法已经被上面取代了
  document.cookie="name=vae;expires="+date.toUTCString();
  alert(document.cookie); // name=vae
  setTimeout(function(){alert(document.cookie)},4000);//4 秒后打印空的字符串

三、path=pvalue 可选参数
    限制访问 cookie 的目录,默认情况下对于当前网页所在的同一目录下的所有页面有效
四、domain=dvalue 可选参数
    用于限制只有设置了的域名才可以访问;如果没有设置,则默认在当前域名访问
 比如设置 test*.com 表示域名为test*.com的服务器共享该Cookie。
五、secure=true|false 可选参数,默认是 true 不安全传输
    安全设置,指明必须通过 安全的通信通道来传输(https) 才能获得 cookie,true 不安全,默认值;false 安全,必须通过 https 来访问
    比如:如果你设置 document.cookie = “name=vae;secure”
       上面的代码如果是在 http 的协议中访问,那么是访问不了的

//设置 cookie
     function setCookie(objName, objValue, objHours){//添加cookie
         var str = objName + "=" + encodeURIComponent(objValue);
         if (objHours > 0) {//为0时不设定过期时间,浏览器关闭时cookie自动消失
             var date = new Date();
             var ms = objHours * 3600 * 1000;
             date.setTime(date.getTime() + ms);
             str += "; expires=" + date.toUTCString();
         }
         document.cookie = str;
 
     }<br>
     //获取 cookie
     function getCookie(objName){//获取指定名称的cookie的值
         //多个cookie 保存的时候是以 ;空格  分开的
         var arrStr = document.cookie.split("; ");
         for (var i = 0; i < arrStr.length; i++) {
             var temp = arrStr[i].split("=");
             if (temp[0] == objName){
                 return decodeURIComponent(temp[1]);
             }else{
                 return "";
             }
                  
         }
     }
      
     //为了删除指定名称的cookie,可以将其过期时间设定为一个过去的时间
     function delCookie(name){
         var date = new Date();
         date.setTime(date.getTime() - 10000);
         document.cookie = name + "=a; expires=" + date.toUTCString();
     }
  • 8
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值