热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:JavaScriptcookie学习

篇首语:本文由编程笔记#小编为大家整理,主要介绍了JavaScript-cookie学习相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Javascript - COOKIE学习相关的知识,希望对你有一定的参考价值。







今天遇到一个需求,需要通过做一个用户登录的功能,并且需要使浏览器可以保存其登录信息,使得用户下次再访问网页的时候无需再次进行登录操作,那么这时就想到使用COOKIEs进行信息保存。




目录


  • 一、COOKIE介绍
    • 1.定义
    • 2.字段含义
    • 3.条件

  • 二、设置COOKIE
    • 1.简单的COOKIE设置
    • 2.带有过期时间的COOKIE设置
    • 3.注意

  • 三、获取COOKIE
    • 1.查看COOKIE
    • 2.获取COOKIE值

  • 四、删除COOKIE
  • 五、方法封装
    • 1.设置COOKIE
    • 2.获取COOKIE
    • 3.删除COOKIE




一、COOKIE介绍

1.定义

COOKIE是一种用来在客户端硬盘上存储信息的手段,可以用来存储一些信息,实现一些特殊的效果,例如实现多少天内免登陆,或者存储一些小数据。


2.字段含义

COOKIE中所有的字段设置我们都是通过;去进行分割。


  • key=value(键=值) 就是 COOKIE的一个键值对,一般是根据key拿到对应的value

  • expires(过期时间)设置该COOKIE的过期时间,expires=GMT的时间字符串,例如要7天免登陆,就可以设置过期时间为今天开始的7天之后的日期。如果不设置过期时间,默认浏览器关闭该COOKIE就消失了。

  • path(路径) COOKIE并不是在哪里都能够获取到的。在网站中分为很多目录,可能很多目录中不需要使用到COOKIE,所以可以设置COOKIE的路径,这样更加安全,避免任意目录都能访问到该COOKIE。通过 path=/E:Javascript/test 这样只能在该目录下才能获取到该COOKIE

  • domain(域)默认该COOKIE在该COOKIE所在域名下才能够访问到,但是有时候a.chaijinsong.com需要访问b.chaijinsong.com下的COOKIE,这时候就需要设置domain=chaijinsong.com。这样两个子域名都可以访问该COOKIE

  • secure(安全性) 默认secure是为false的,即通过http协议来传输,但是如果 secure=true 的话,就只能t通过https来进行传输


3.条件

需要注意的是,COOKIE 只有在服务环境下才能设置,所以如果只是自己在本地练习COOKIE的话,可以使用webstorm编辑器, 它内部自带服务环境,如果是使用vscode编辑器的小伙伴,需要去下载Live Server 插件,右击运行时选择【Open with Live Srever】查看效果即可。


二、设置COOKIE

1.简单的COOKIE设置

如下代码所示,设置了一个key为name,value为huanan的COOKIE。

document.COOKIE = "name=huanan";

在浏览器中该COOKIE的具体信息如下:可以看到该COOKIE的到期时间为浏览会话结束时,这是因为我们并未给该COOKIE设置到期时间,所以该COOKIE在会话关闭的时候就会被清除。
在这里插入图片描述


2.带有过期时间的COOKIE设置

如下代码所示,设置了一个key为name,value为张三的COOKIE,并且设置了过期时间为5天后。

var exdate = new Date();//获取当前时间
exdate.setDate(exdate.getDate() + 5);//获取当前时间+5天后的日期
// toUTCString() 是将时间根据世界时转换为字符串
document.COOKIE = "name=张三;" + "expires=" + exdate.toGMTString();

在浏览器中该COOKIE的具体信息如下:可以看到该COOKIE的到期时间为创建时间+5天,说明过期时间设置成功。
在这里插入图片描述


3.注意

如果要设置多条COOKIE,必须一条条创建,不能批量设置。

//设置第一条COOKIE
document.COOKIE = "name=huanan";
//设置第二条COOKIE
document.COOKIE = "age=19";

三、获取COOKIE

1.查看COOKIE

获取COOKIE前,可以先查看下当前的COOKIE数据。

console.log(document.COOKIE)

控制台打印信息如下:即所有的COOKIE都保存在一个字符串中。
在这里插入图片描述


2.获取COOKIE值

通过查看COOKIE值,所知需要获得相应的COOKIE值我们可以通过字符串的一些方法配合使用截取该COOKIE字符串中我们想要的value值。具体代码如下所示:

var name = "age";
// 获取该key首个字符在字符串中的下标位置
var index = document.COOKIE.indexOf(name);
console.log("index", index);
// 判断是否有这个COOKIE存在
if (index != -1) {
// 获取该value值首个字符在字符串中的下标位置
index = index + name.length + 1;
// 获取value值最后一个字符的位置
end = document.COOKIE.indexOf(";", index);
if (end == -1) {
end = document.COOKIE.length;
}
//得到想要的COOKIE的值
var value = unescape(document.COOKIE.substring(index, end));
console.log("vale", value);
} else {
console.log("不存在该COOKIE");
}

四、删除COOKIE

删除COOKIE就比较简单了,我们只需要重新设置改COOKIE的过期时间比当前时间更早即可。

var name = "age";
var date = new Date();
date.setTime(date.getTime() - 10000);
document.COOKIE = name + "=v; expires=" + date.toGMTString();

五、方法封装

1.设置COOKIE

function setCOOKIE(name, value, expiredays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + expiredays);
document.COOKIE = name + "=" + escape(value) + (expiredays == null ? "" : ";expires=" + exdate.toGMTString());
}

2.获取COOKIE

function getCOOKIE(name) {
var COOKIEs = document.COOKIE;
var COOKIE_pos = COOKIEs.indexOf(name);
if (COOKIE_pos != -1) {
COOKIE_pos = COOKIE_pos + name.length + 1;
var COOKIE_end = COOKIEs.indexOf(";", COOKIE_pos);
if (COOKIE_end == -1) {
COOKIE_end = COOKIEs.length;
}
var value = unescape(COOKIEs.substring(COOKIE_pos, COOKIE_end));
} else {
console.log("不存在该COOKIE");
}
return value;
}

3.删除COOKIE

function delCOOKIE(name) {
var date = new Date();
date.setTime(date.getTime() - 10000);
document.COOKIE = name + "=v; expires=" + date.toGMTString();
}





推荐阅读
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • .NetCoreWebApi生成Swagger接口文档的使用方法
    本文介绍了使用.NetCoreWebApi生成Swagger接口文档的方法,并详细说明了Swagger的定义和功能。通过使用Swagger,可以实现接口和服务的可视化,方便测试人员进行接口测试。同时,还提供了Github链接和具体的步骤,包括创建WebApi工程、引入swagger的包、配置XML文档文件和跨域处理。通过本文,读者可以了解到如何使用Swagger生成接口文档,并加深对Swagger的理解。 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 包含A-Z的字母的消息通过以下规则编码:'A'-1'B'-2'Z'-26给定一个包含数字的编码消息,请确定解 ... [详细]
  • 渗透测试基础bypass绕过阻挡我们的WAF(下)
    渗透测试基础-bypass ... [详细]
  • 我正在尝试使用scrapycrallsingle运行完美运行的scrapy蜘蛛,但我无法在python脚本中运行它.主要问题是从不执行SingleBlogSpider.parse方 ... [详细]
  • 这篇文章主要介绍PHP如何使用在全部作用域中始终可用的内置变量,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要 ... [详细]
  • 8.2location对象location对象既是window对象的属性,也是document对象的属性.window.location和document.location引用的是同一个对象. ... [详细]
  • \\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*if(string.IsNullOrEmpty(Tex ... [详细]
  • 显示中文星期几
    显示中文星期几引自:第一种方法:直接翻译,最笨、最容易想到的方法。Code获得中文星期名称 ... [详细]
  • Java常用类:String类目录Java常用类:String类StringString类常用方法案例演示String字符串是常量,创建之后不可改变字符串字面值存储在字符串池中,可 ... [详细]
  • [刷题] LeetCode 3 Longest Substring Without Repeating Character
    要求在一个字符串中寻找没有重复字母的最长子串思路滑动窗口如果当前窗口没有重复字母,j右移,直到包含重复字母i右移,直到不包含重复字母用数组记录字母是否出现过,判断重复实现1clas ... [详细]
author-avatar
手机用户2502940575
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有