• Web客户端数据存储学习笔记——Cookie


      

      今天对登录访问的安全以及web客户端存储做了一些大致的学习,决定在这方面加深理解,记录在博客里。第一个接触到的是Cookie...

    WHAT?

    WHY?

    HOW?

    在学习cookie的使用时发现其名称以及存储的字符串值是必须经过URL编码的。

    然而网上的许多示例(包括 w3school中文站)都没有做这一处理,所以三哥参考阮一峰老师的关于URL编码博文找到了解决方案,在这里分享:

    cookieUtil.js:
     1 //cookieUtil.js
     2 var cookieUtil = {
     3     
     4     //读取"name"对应cookie的值
     5     get : function(name){
     6             var cookieName = encodeURIComponent(name)+"=",                //对传入name参数URL编码
     7                 cookieStart = document.cookie.indexOf(cookieName),
     8                 cookieValue = null;
     9                 
    10             if(cookieStart > -1){
    11                 var cookieEnd = document.cookie.indexOf(";",cookieStart);
    12                 if(-1 == cookieEnd){
    13                     cookieEnd = document.cookie.length;            //cookie值为空
    14                 }
    15                 //对cookie保存的值URL解码
    16                 cookieValue = decodeURIComponent(document.cookie.substring(cookieStart+cookieName.length,cookieEnd));
    17             }
    18        return cookieValue;
    19         },
    20         
    21     //创建或设置cookie        其中name将作为某一域内的唯一标示、不可更改
    22     set : function(name,value,expires,path,domain,secure){
    23         //对名称和值URL编码
    24         var cookieText = encodeURIComponent(name)+"="+encodeURIComponent(value);
    25         
    26         if(expires instanceof Date){
    27             cookieText += "; expires="+expires.toGMTString();
    28         }
    29         if(path){
    30             cookieText += "; path="+path;
    31         }
    32         if(domain){
    33             cookieText += "; domain="+domain;
    34         }
    35         if(secure){
    36             cookieText += "; secure";
    37         }
    38         
    39         //将根据name是否存在决定是否添加新的cookie字符串,需要注意:a、cookie长度(limit:4095B);b、每个域允许的cookie个数(各浏览器决定)
    40         document.cookie = cookieText;        
    41     },
    42     
    43     //删除cookie
    44     unset : function(name,path,domain,secure){
    45         this.set(name,"",new Date(0),path,domain,secure);
    46     }
    47     
    48 }

    WHEN?

    BETTER!

    updating

    REFERENCE:

    1、 关于URL编码

    2、Cookie/Session机制详解

  • 相关阅读:
    函数式注释、文件头部注释
    slice()与splice()的区别
    纯前端跨域下载pdf链接文件解决方案
    SqlServer数据库设计一个字段的值是由其他字段运算结果所得
    关键字的几种用法
    DataContract和DataMember的作用
    windows10如何打开vhd文件
    c#中partial 作用
    c#中(&&,||)与(&,|)的区别和应用
    c#MD5加密
  • 原文地址:https://www.cnblogs.com/linsanshu/p/5790990.html
Copyright © 2020-2023  润新知