设置cookie、获取cookie、删除cookie

设置cookie

当我们需要设置一个cookie时,需要像下面这样写:

document.cookie="my_cookie_name=my_cookie_value;expires=toDate;domain=www.baidu.com;path=/"

上面的代码中,我们通过“my_cookie_name=my_cookie_value”这一字段指定了cookie名“my_cookie_name”和cookie值“my_cookie_value”,expires 指定 cookie 过期时间是“toDate”,注意 “toDate” 必须是UTC时区的时间字符串 (可以通过Date.prototype.toUTCString()转换得到),domain 指定该 cookie 支持的域,path 指定 cookie 的有效路径。 上面的代码可以这样解读:我设置了一个名为 my_cookie 的 cookie,它在 www.baidu.com 的所有路径下都有效(path 指定为 ‘/’时表示所有路径有效,如果指定为‘/api’则表示仅在‘/api’下的所有路径有效),它会在 toDate 这个时间失效。

我们尝试自己封装一个 setCookie 方法来简化上面复杂的操作

/**
 * 
 * @param {string} cname cookie名
 * @param {string} cvalue cookie值
 * @param {number} exdays 有效天数
 * @param {string} domain 有效域
 * @param {string} path 有效路径
 */
function setCookie(cname,cvalue,exdays, domain, path){
  var d = new Date()
  d.setTime(d.getTime()+(exdays*24*60*60*1000))
  var expires = "expires="+d.toUTCString()
  var path_ = path ? "path=" + path : "path=/",domain_ = domain ? "domain=" + domain + ';' : ';'
  document.cookie = cname + "=" + cvalue + "; " + domain_ + expires + "; " + path_
}
删除 cookie

我们可以通过修改 cookie 过期时间的方式来删除 cookie。因为我们已经实现了 setCookie 方法,所以 删除cookie 会很容易做到。

/**
 * 
 * @param {string} cname 需要删除的cookie名
 */
function clearCookie(cname) {
	setCookie(cname, '', -1)
}
获取cookie

如果使用 document.cookie 来获取 cookie 值,你会发现你将获取到所有 cookie 名和 cookie 值连接成的字符串,如下

'PHPSESSID=ciopf5ctf0irv930s3q0dnadu7; country_id=45; _ga=GA1.2.1256568076.1608083163;'

我们通过正则表达式来匹配它

function getCookie(name) {
	const reg = new RegExp('(^| )'+ name + '=([^;]*)(;|$)')
	if (arr = document.cookie.match(reg)) {
		return arr[2]
	} else {
		return ''
	}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值