JS | 如何对Cookie进行存值,取值和清除操作

举报
闫小样丶 发表于 2020/07/05 23:57:40 2020/07/05
【摘要】 在做项目的过程中,我们经常会对cookie进行操作。例如我们常见的存值,取值,清除指定的cookie和清除全部的cookie以及给存放的cookie设置过期时间等等。所以,根据做项目中发现的这些问题在此做个总结。cookie中获取域名:/** * cookie中获取域名 * */ function GetCookieDomain() { var host = location.hostnam...

在做项目的过程中,我们经常会对cookie进行操作。例如我们常见的存值,取值,清除指定的cookie和清除全部的cookie以及给存放的cookie设置过期时间等等。所以,根据做项目中发现的这些问题在此做个总结。


cookie中获取域名:

/**
 * cookie中获取域名
 * */ 
function GetCookieDomain() {
	var host = location.hostname;
	var ip = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
	if (ip.test(host) === true || host === 'localhost') return host;
	var regex = /([^]*).*/;
	var match = host.match(regex);
	if (typeof match !== "undefined" && null !== match) host = match[1];
	if (typeof host !== "undefined" && null !== host) {
		var strAry = host.split(".");
		if (strAry.length > 1) {
			host = strAry[strAry.length - 2] + "." + strAry[strAry.length - 1];
		}
	}
	return '.' + host;
}

cookie中存值:

/**
 * cookie中存值
 * */
function setCookie(name, value) {
	var curWwwPath=window.document.location.href;
	var pathName=window.document.location.pathname;
	var pos=curWwwPath.indexOf(pathName);
	var localhostPath=curWwwPath.substring(0,pos);	//获取地址到端口号
	var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1); //项目名
		localhostPath = localhostPath.replace(/\"/g, "");
		projectName = projectName.replace(/\"/g, "");
	
	if (value) {
		var days = 1;	//定义一天
		var exp = new Date();
		exp.setTime(exp.getTime() + days * 24 * 60 * 60 * 1000);
		// 写入Cookie, toGMTString将时间转换成字符串
//		document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + ";path=/video_learning" + ";domain=localhost";
		document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + ";path=" + projectName + ";domain=" + GetCookieDomain();
	}
};

cookie中存值并设置过期时间:

/**
 * cookie中存值并设置过期时间
 * name名字,value值,expiredays时间
 * */
function setCookie(name, value, expiredays) {
	if (value) {
		var days = 1;	//定义一天
		var exp = new Date();
		exp.setTime(exp.getTime() + expiredays);
		// 写入Cookie, toGMTString将时间转换成字符串
		document.cookie = name + "=" + escape(value) + ((expiredays==null) ? "" : ";expires=" + exp.toGMTString()) + ";path=/" + ";domain=localhost";
	}
};

cookie中取值:

/**
 * cookie中取值
 * */
function getCookie(name) {
	var arr,reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");	//匹配字段
	if (arr = document.cookie.match(reg)) {
		return unescape(arr[2]);
	} else {
		return null;
	}
};

清除指定cookie值:

/**
 * 清除指定cookie值
 * */
function delCookie(name) {
	var exp = new Date();
	exp.setTime(exp.getTime() - 1);
	var cval = setCookie(name);
	if (cval && cval != null) {
//		document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString() + ";path=/video_learning" + ";domain=localhost";
		document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString() + ";path=/video_learning" + ";domain=localhost";
	}
};

清除全部cookie值:

/**
 * 清除全部cookie值
 * */
function clearCookie() {
	var curWwwPath=window.document.location.href;
	var pathName=window.document.location.pathname;
	var pos=curWwwPath.indexOf(pathName);
	var localhostPath=curWwwPath.substring(0,pos);	//获取地址到端口号
	var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1); //项目名
		localhostPath = localhostPath.replace(/\"/g, "");
		projectName = projectName.replace(/\"/g, "");
	
	var keys = document.cookie.match(/[^ =;]+(?=\=)/g);
	if (keys) {
		for (var i = keys.length; i--;) {
//			document.cookie = keys[i] +'=0;expires=' + new Date( 0).toUTCString() + ";path=/video_learning" + ";domain=localhost";
//			document.cookie = keys[i] +'=0;expires=' + new Date( 0).toUTCString() + ";path=" + projectName + ";domain=" + localhostPath;
			document.cookie = keys[i] +'=0;expires=' + new Date( 0).toUTCString() + ";path=" + projectName + ";domain=" + GetCookieDomain();
		}
	}
};

总结:cookies给网站和用户带来的好处非常多

  1. Cookie能使站点跟踪特定访问者的访问次数、最后访问时间和访问者进入站点的路径。 

  2. Cookie能告诉在线广告商广告被点击的次数,从而可以更精确的投放广告 。

  3. Cookie有效期限未到时,Cookie能使用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点。

  4. Cookie能帮助站点统计用户个人资料以实现各种各样的个性化服务 。


拓展:

cookies过期时间设置方式:

cookie.setMaxAge(0);     //不记录cookie

cookie.setMaxAge(-1);     //会话级cookie,关闭浏览器失效

cookie.setMaxAge(60*60);     //过期时间为1小时

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。