cookie 是以 键/值 对的形式存在的,每一个“ 变量 ”对应一个值,相互之间以分号隔开,以下所示:
username=itxueyuan;password=123456;age=22
总结:cookie一般用来保存服务器的信息(或者说维持会话),由服务端程序或者JavaScript脚本写入,在后续请求中,供服务器读取。 javascript
修改和删除cookie java
JavaScript 经过 document.cookie 来修改和删除 cookie 。
JavaScript 在设置 cookie 时会遵循这样一条原则:新设置的 cookie 若是与原有的 cookie 相同(名称、路径和域名都相同),会将原有的 cookie 覆盖(采用新 cookie) 。
这就给咱们提供了一种修改和删除 cookie 的方法——直接覆盖原有的 cookie 。
例如,有这样一个 cookie:
username=itxueyuan;expire=1369929124191;path=/;domain=www.itxueyuan.org
将用户名修改成“JavaScript”,并设置一天后过时: 数据库
var date=new Date(); var cookieExpire=date.getTime()+24*3600*1000; // 修改 cookie 时,名称、路径和域名必须相同 document.cookie=" username=JavaScript ; expire= " + cookieExpire + " ;path=/;domain=www.itxueyuan.org ";
删除该cookie 浏览器
var date=new Date(); var cookieExpire=date.getTime()-1000; // 设置为一个过去的时间/ / 删除 cookie 时,名称、路径和域名必须相同 document.cookie=" username=JavaScript ; expire= " + cookieExpire + " ;path=/;domain=www.itxueyuan.org ";
注:为了删除一个cookie,能够将其过时时间设定为一个过去的时间 服务器
JavaScript设置cookie cookie
键/值 对 | 说明 |
---|---|
name=value | 必需。设置cookie的名称和值,一次只能设置一个。 在cookie的名称或值中不会出现分号( ; )、逗号( , )、等号( = )、空格以及中文等,不然将会被浏览器编码。在cookie的名称中作到这点很容易(名称通常是开发人员设定好的),可是保存的值是不肯定的,如何来存储这些值呢?方法是用escape()函数进行编码,它能将一些特殊符号使用十六进制表示,例如空格将会编码为“20%”,从而能够存储于cookie值 中,并且使用此种方案还能够避免中文乱码的出现。 例如,将“小明”存入cookie: document.cookie="username="+eacape("小明"); |
expire=GMT_String | 可选。设置cookie的过时时间。 默认状况下(不设置expire),用户关闭浏览器时会销毁cookie,这些cookie仅仅是存储在内存中,而没有创建相应的硬盘文件。在实际开发中,cookie 一般须要长期保存,例如保存用户登陆的状态,能够经过设置 cookie 的过时时间来实现。 过时时间是以GMT格式表示的时间字符串,超过这个时间,cookie将消失,不可访问。 例如,若是要将cookie设置为10天后过时: var date=new Date(); // 更多请参考 JavaScript Date 对象 var expireDays=10; date.setTime(date.getTime()+expireDays*24*3600*1000); |
path=cookieDir | 可选。设置cookie的有效路径。 默认状况下(不设置path),cookie只在当前路径下有效,路径范围以外不能访问该cookie。例如,在 /javascript/jiaocheng/ 路径下设置的cookie,只能被 /javascript/jiaocheng/ 路径下的文件以及子目录下的文件访问。 要使 cookie 全站有效,请设置 path=/ 。 |
domain=cookieDomain | 可选。设置cookie的有效域名。 默认状况下(不设置 domain),cookie 只在当前域名下有效。例如,在 demo.itxueyuan.org 下设置的 cookie ,不能在 javascript.itxueyuan.org 域名下访问。 要使 cookie 在 itxueyuan.org 的全部二级域名和主域名下都有效,请设置domain=.itxueyuan.org |
document.cookie=" name=xiaoming ";
var cookieValue=" 小明 "; document.cookie=" name= "+escape(cookieValue) ;
document.cookie=" name=xiaoming ; path=/ ";
var date=new Date(); // 建立日期对象 var cookieExpire=date.getTime()+24*3600*1000; // 以微妙计算document.cookie=" name=xiaoming ; expire= "+cookieExpire;
var username="小明"; var password="123456"; var expire=(new Date()).getTime()+1000*3600*24*30; document.cookie = " username=" + escape(username) + " expire=" + expire + " ; path=/ ; domain=.itxueyuan.org "; document.cookie = " password=" + escape(password) + " expire=" + expire + " ; path=/ ; domain=.itxueyuan.org ";
<input id="demo1" type="button" value="获取cookie" /> <script type="text/javascript"> document.getElementById("demo1").onclick=function(){ alert(document.cookie); } </script>咱们能够自定义一个函数来获取单个 cookie 的值。
/** * func getCookie() 获取单个cookie的值 * pram cookieName cookie的名称**/ function getCookie(cookieName){ var cookieObj={},cookieSplit=[],// 以分号(;)分组 cookieArr=document.cookie.split(";"); for(var i=0,len=cookieArr.length;i<len;i++) if(cookieArr[i]) {// 以等号(=)分组 cookieSplit=cookieArr[i].split("="); // Trim() 是自定义的函数,用来删除字符串两边的空格 cookieObj[cookieSplit[0].Trim()]=cookieSplit[1].Trim(); } return cookieObj[cookieName]; }
getCookie["name"];
/** * func getCookieObj() 获取全部cookie的值并将其保存为对象的属性**/ function getCookieObj(){ var cookieObj={},cookieSplit=[], // 以分号(;)分组 cookieArr=document.cookie.split(";"); for(var i=0,len=cookieArr.length;i<len;i++) if(cookieArr[i]) { // 以等号(=)分组 cookieSplit=cookieArr[i].split("="); // Trim() 是自定义的函数,用来删除字符串两边的空格 cookieObj[cookieSplit[0].Trim()]=cookieSplit[1].Trim(); } return cookieObj; }
var cookieObj=getCookieObj(); cookieObj.name;