前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

Cookie

作者头像
jinghong
发布2020-05-09 15:28:21
1.3K0
发布2020-05-09 15:28:21
举报
文章被收录于专栏:前端开发0202前端开发0202

什么是cookie

cookie:会话跟踪技术 客户端 session:会话跟踪技术 服务端

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

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

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

cookie作用:

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

cookie生命周期:

默认情况下cookie生命周期是一次会话(浏览器被关闭) 可以通过expires来设置cookie的生命周期

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

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

代码语言:javascript
复制
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属性即可(如下)
代码语言:javascript
复制
document.cookie = "name=xuyuxin;path=/;"

           例如:
            保存到了www.it666.com/jQuery/Ajax/路径下,
            我们想在 www.it666.com/jQuery/Ajax/13-weibo/,
            和 www.it666.com/jQuery/ 路径下也能访问

            例如:
            我们在www.it666.com下面保存了一个cookie,
            那么我们在edu.it666.com中是无法访问的
            如果想在edu.it666.com中也能访问, 那么我们需要再添加一个domain属性才可以;
            document.cookie = "name=zs;path=/;domain=it666.com;";
            */

cookie封装

代码语言:javascript
复制
/**
 * @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数据

代码语言:javascript
复制
window.location.hash = 要添加的数据;

获取hash数据

代码语言:javascript
复制
//在js中没有专门获取hash数据的函数,因此只能自寻方法这里用substring()函数截取
console.log(window.location.hash.substring(1))  //从索引为1的字符串开始截取
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是cookie
    • cookie作用:
      • cookie生命周期:
        • cookie其他注意点:
          • cookie作用范围:
            • cookie封装
            • hash
              • 添加一条hash数据
                • 获取hash数据
                相关产品与服务
                云开发 CLI 工具
                云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档