loading

Cookie


什么是cookie

cookie:会话跟踪技术客户端

session:会话跟踪技术服务端

在网页中怎么查看cookie里面的数据情况?

1.可以在编辑器中输入document.cookie,然后打印或输出即可

2.Chrome浏览器中F12打开,开发者工具 —— Application面板中查找cookie即可

cookie作用:

将网页中的数据保存到浏览器中

cookie生命周期:

默认情况下cookie生命周期是一次会话(浏览器被关闭

可以通过expires来设置cookie的生命周期

  1. 如果通过expires=设置了过期时间, 并且过期时间没有过期, 那么下次打开浏览器还是存在
  2. 如果通过expires=设置了过期时间, 并且过期时间没有过期, 那么下次打开浏览器还是存在

以下代码块示例怎么修改cookie的过期时间并设置到当天的时间

var date = new Date();
date.setDate(curTime.getDate()+1//这里可以加一就是明天,也可以减一就是昨天也就看不到此数据,两者只能选其一
document.cookie = "name=xuyuxin;expires="+date.toGMTString()+";";
alert(document.cookie);

cookie其他注意点:

  1. cookie默认不会保存任何数据
  2. cookie不能一次性保存多条数据
  3. cookie保存数据有大小和个数限制个数限制:20~60总大小不能超过4KB左右

cookie作用范围:

  1. 同一个浏览器同一个路径下访问
  2. 如果在同一个浏览器中,默认情况下,下一级路径也能访问
  3. 如果在同一个浏览器中,想让上一级目录也能访问到保存的cookie数据,那么需要添加一个path属性即可(如下)

cookie封装

/**
 * @param {*} option.key 
 * @param {*} option.value 
 * @param {*} option.path 
 * @param {*} option.domain 
 * @param {*} option.beOverDueTime 
 * @method 添加一条cookie数据
 */
function addCookie(option) {
    //路径
  var index = window.location.pathname.lastIndexOf("/"),
    curPath = window.location.pathname.slice(0, index);
  option.path = option.path || curPath;

    //域名作用域
    option.domain = option.domain || document.domain;
    //过期时间
    if(!option.beOverDueTime){
        //没传则直接创建cookie
        document.cookie = option.key+"="+option.value+";path="+option.path+";domain="+option.domain+";";
    }else{
    //创建cookie
        var date = new Date();
        date.setDate(date.getDate()+option.beOverDueTime);
        document.cookie = option.key+"="+option.value+";path="+option.path+";domain="+option.domain+";expires="+date.toGMTString()+";";
    }
}
/**
 * @param {*} key 
 * @method 获取指定的cookie数据
 */
function getCookie(key){
    for(var i = 0 ; i<document.cookie.split(";").length;i++){
        if(document.cookie.split(";")[i].split("=")[0].trim()===key){
            return document.cookie.split(";")[i].split("=")[1].trim();
        }
    }
}
/**
 * @param {*} key 
 * @param {*} path 
 * @method 删除指定的cookie数据,注意点:默认只能删除默认路径的cookie数据,想删除别的路径的cookie,必须在调用函数前传入指定的路径即可删除
 */
function delCookie(key,path){
    addCookie({
        key:key,
        value:getCookie(key),
        path:path,
        beOverDueTime: -1
    })
}

hash

hash能实现和cookie一样的功能,各有各的好处,hash使用起来被cookie方便许多

添加一条hash数据

window.location.hash = 要添加的数据;

获取hash数据

//在js中没有专门获取hash数据的函数,因此只能自寻方法这里用substring()函数截取
console.log(window.location.hash.substring(1))  //从索引为1的字符串开始截取

文章作者:Jing Hong
版权声明:本博客所有文章除特別声明外,均采用CC BY 4.0许可协议。转载请注明来源Jing Hong!
评论
 上一篇
webSocketwebSocket
WebSocket介绍、使用 webSocket是一种新的传输协议,HTML5新增的协议,相较于http协议,webSocket更像是一台对讲机,可以实现实时通信,双向传输,即服务器也可以主动发送请求到前端,打破了以往只能前端发送请求,然后
2019-07-10
本篇 
CookieCookie
什么是cookie cookie:会话跟踪技术 客户端 session:会话跟踪技术 服务端 在网页中怎么查看cookie里面的数据情况? 1.可以在编辑器中输入document.cookie,然后打印或输出即可 2.Chrome浏览器中
2019-04-01
  目录