怎么设置cookie,怎么设置cookie以及删除cookie和cookie详解
在操作cookie之前,先来看一下cookie长什么样。
可以看到,cookie是一个个键值对(“键=值”的形式)加上分号空格隔开组合而成, 形如: "name1=value1; name2=value2; name3=value3" 设置cookie:

1 /**
2 * 设置cookie
3 * @param name cookie的名称
4 * @param value cookie的值
5 * @param day cookie的过期时间
6 */
7 var setCookie = function (name, value, day) {
8 if(day !== 0){ //当设置的时间等于0时,不设置expires属性,cookie在浏览器关闭后删除
9 var expires = day * 24 * 60 * 60 * 1000;
10 var date = new Date(+new Date()+expires);
11 document.cookie = name + "=" + escape(value) + ";expires=" + date.toUTCString();
12 }else{
13 document.cookie = name + "=" + escape(value);
14 }
15 };

注意:expires使用GMT或UTC格式的时间, 我这里没有指定路径(path)和域(domain), 当没有指定路径时默认为当前路径下,如对 于“https://home.cnblogs.com/u/maderlzp/”下设置的cookie,其path为"/u/maderlzp", 其domain为当前域名“home.cnblogs.com”。
为什么有时候删除不了cookie? 可能是因为删除cookie时没有指定该cookie的path和domain,导致找不到这个cookie来设置过期时间而无法删除。
获取cookie:
/**
* 获取对应名称的cookie
* @param name cookie的名称
* @returns {null} 不存在时,返回null
*/
var getCookie = function (name) {
var arr;
var reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
if (arr = document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
};
cookie获取正则解析:
"(^| )" + name + "=([^;]*)(;|$)" (^| )匹配cookie开头或空格(cookie键值对之间用分号空格隔开),也就是cookie键值对的开始。接着是cookie的名称name,([^;]*)匹配除分号以外的任意字符,也就是cookie键值对的值。最后(;|$)匹配分号或整个cookie的结尾,也就是cooke键值对的结尾。 更多正则的语法详解请参考:
正则表达式的用法和常用实例【1】
删除cookie:

1 /**
2 * 删除cookie
3 * @param name cookie的名称
4 */
5 var delCookie = function (name) {
6 setCookie(name, ' ', -1);
7 };

设置要删除的cookie的expires为过去的时间即可
修改cookie:
使用上面设置cookie的方法,重新给要修改的cookie赋值就行,这样旧的就会被覆盖掉
cookie的主要作用:
Cookie主要用在以下三个方面:
- 会话状态管理(如用户登录状态、购物车、游戏分数和其它需要记录的信息)
- 个性化设置(如用户自定义设置、主题等)
- 浏览器行为跟踪(如跟踪分析用户行为)
cookie设置语法:
document.cookie = "cookieName=mader; expires=Fri, 31 Dec 2017 15:59:59 GMT; path=/mydir; domain=cnblogs.com; max-age=3600; secure=true";
- cookieName=mader :name=value,cookie的名称和值
- expires=Fri, 31 Dec 2017 15:59:59 GMT: expires,cookie过期的日期,如果没有定义,cookie会在对话结束时过期。日期格式为 new Date().toUTCString()
- path=/mydir: path=path (例如 '/', '/mydir') 如果没有定义,默认为当前文档位置的路径。
- domain=cnblogs.com: 指定域(例如 'example.com', '.example.com' (包括所有子域名), 'subdomain.example.com') 如果没有定义,默认为当前文档位置的路径的域名部分。
- max-age=3600: 文档被查看后cookie过期时间,单位为秒
- secure=true: cookie只会被https传输 ,即加密的https链接传输
怎么设置cookie,怎么设置cookie以及删除cookie和cookie详解的更多相关文章
- 关于mysql(Navicat premium软件中) 外键设置中“删除”和“更新”选项详解
ON DELETE restrict(约束):当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除. no action:意思同restrict.即如果存在从数 ...
- eclipse自动提示设置以及问题:去除变量自动提示(图文详解)
第一件事 eclipse设置为自动提示 配置步骤: 1 Window > Preferences > Java > Editor > Content Assist 2 &quo ...
- PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
使用Python进行数据分析,大家都会多少学习一本经典教材<利用Python进行数据分析>,书中作者使用了Ipython的交互环境进行了书中所有代码的案例演示,而书中的Ipython交互环 ...
- Spark Mllib里如何将trainDara训练数据文件里第一行是字段名不是数据给删除掉(图文详解)
不多说,直接上干货! 具体,见 Hadoop+Spark大数据巨量分析与机器学习整合开发实战的第13章 使用决策树二元分类算法来预测分类StumbleUpon数据集
- php之Cookie与Session详解
Cookie管理 Cookie是在HTTP协议下,通过服务器或脚本语言可以维护客户浏览器上信息的一种方式,Cookie的使用很普遍,许多提供个人化服务的网站都是利用Cookie来区别不同用户,以显示与 ...
- Android 通过Java代码生成创建界面。动态生成View,动态设置View属性。addRules详解
废话不多说,本文将会层层深入给大家讲解如何动态的生成一个完整的界面. 本文内容: Java代码中动态生成View Java代码中动态设置View的位置,以及其他的属性 LayoutParams详解 一 ...
- cookie的设置、获取以及删除
首先介绍一下cookie的基本信息: cookie是以域为单位的,它必须放在服务器的的环境下,但是cookie的容量小,只有4kb,并且也不安全,还有入股cookie的名字相同,会修改或者覆盖原来的值 ...
- Cookie的属性(cookie的设置、获取和删除)
每个cookie都有四个可选的属性,他们分别控制cookie的生存周期.可见性.安全性等. Cookies最初设计时,是为了CGI编程.但是,我们也可以使用Javascript脚本来操纵cookies ...
- JS读写Cookie(设置、读取、删除)
JS读写Cookie(设置.读取.删除) Cookie是客户端存放数据的一种方式,可用来做状态保持. 1.设置Cookie: a.无过期时间:(若不设置过期时间,默认为会话级Cookie,浏览器关闭就 ...
- js封装Cookie操作 js 获取cookie js 设置cookie js 删除cookie
每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code var CookieUtil = { // 设置cookie set : functi ...
随机推荐
- UIP和lwip的区别 转载
uIP是专门为8位和16位控制器设计的一个非常小的TCP/IP栈.完全用C编写,因此可移植到各种不同的结构和操作系统上,一个编译过的栈可以在几KB ROM或几百字节RAM中运行.uIP中还包括一个HT ...
- 分配swap分区空间
1. 分区,并修改为swap分区ID [root@centos2 ~]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux ). 更改将停留在内存中,直到您决定将更改写入磁盘 ...
- 【转】Http和Https下的cookie的写入问题
网站https:// 可以登陆, 但是切换到http的时候不能登陆. 原因是:https访问的时候,返回的cookie设置了secure=1, 切换成http访问的时候, 这个时候不能操作那个cook ...
- 1209 BBS 登录
目录 上周内容 今日内容 url.py views.py login home.html 逻辑流程 登录功能 上周内容 bbs项目 项目开发流程 需求分析 架构设计 分组开发 我们一般情况下都只是作用 ...
- 《少年先疯队》第八次团队作业:Alpha冲刺第四天
前言 第四天冲刺会议 时间:2019.6.17 地点:宿舍 4.1 今日完成任务情况以及遇到的问题. 4.1.1今日完成任务情况 姚玉婷:管理员功能模块中,收费管理功能的实现. ...
- vue input只允许输入数字
template: <input type="text" v-model="pageIndex" @keyup="inputChange&quo ...
- test20190725 夏令营测试11
50+80+90=220.(每题满分90) 砍树 小A在一条水平的马路上种了n棵树,过了几年树都长得很高大了,每棵树都可以看作是一条长度为a[i]的竖线段.由于有的树过于高大,挡住了其他的树,使得另一 ...
- CH6301 疫情控制
6301 疫情控制 0x60「图论」例题 描述 H国有 n 个城市,这 n 个城市用 n-1 条双向道路相互连通构成一棵树,1号城市是首都,也是树中的根节点. H国的首都爆发了一种危害性极高的传染病. ...
- 关于Bigdecimal的问题
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或者更小的数进行 ...
- C# 7.0 中的新特性((.NET Framework 4.7 与 Visual Studio 2017 ))
C#7.0 于 2017年3月 随 .NET 4.7 和 VS2017 发布. 一. out 变量(out variables) 以前我们使用out变量必须在使用前进行声明,C# 7.0 给我们提供了 ...