快速业务通道

深入了解Cookie - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
tCK=Name1=1&Name2=2";    var d1 = new Date(2008, 9, 17);    document.cookie = "TestCK_2=1;expires=" + d1; }

执行完上面方法后,在客户端获取的Cookie如下图

服务器端获取的Cookie:

需要注意的地方:

1, 设置多个Cookie的时候必须按照上面的设置,不能"TestCK=Name1=1&Name2=2; TestCK_2=1"这样赋值

2, 如果要删除Cookie,可以设置expires属性为过期的时间,例如"document.cookie = TestCK_2=1;expires = 过期时间"

3, 对于在客户端设置的expires..这些属性,在服务器端获取不到,只能获取Value和Values属性(至于为什么会这样我也没有弄明白?)

不管在服务器端和客户端都要注意对domain,path,httponly....这些的设置,在没有特殊需求的时候,别去设置他们,否则可能会造成Cookie遗失.

自定义Cookie类(客户端操作Cookie)

根据document.cookie对Cookie的支持,在赋值和获取值的操作上还是有点麻烦,不像服务器端的HttpCookie那样方便,则下面提供了个自己写的在客户端操作Cookie的对象.基本和HttpCookie相对应,目的是为了操作起来更加方便一些.

CookieObj类: 对应与HttpCookie的Name和Values, __CookieValue为私有属性,一般不要使用,它的值为当前Name对应的document.cookie.

Set方法: 为当前Cookie赋值,设置Values属性.

Remove方法: 根据Key删除Values中的元素.

Get方法: 获取默认的值,因为document.cookie的值可能为"1&name1=1&name2=2"这种形式,所以它获取的是1的元素

GetItemByKey方法: 根据Key获取元素

KeyValuePair类: 这个只是一个键/值对的类.

CookieAdapter类: 提供一种document.cookie和CookieObj之间的转换

CookieAdapter.GetCookies方法 : 获取所有的Cookie,并且转换为CookieObj的数组集合.

CookieAdapter.GetCookieByName方法: 根据Cookie的名称,来获取对应的Cookie.

CookieAdapter.SetCookies方法: 设置document.cookie,接受的参数是由CookieObj对象组成的数组集合.

深入了解Cookie(3)

时间:2011-02-04

Code

/**//* Cookie类 */ function CookieObj(name){    /**//* (Public)名称 */    this.Name = name;    /**//* (Public)Cookie的键/值对 */    this.KeyValues = new Array();    /**//* (Private)document.cookie的字符串 */    this.__CookieValue; } CookieObj.prototype = {    /**//* (Public)设置键/值对 */    Set : function(key, value){      switch(arguments.length){        case 0:          return;          break;        case 1:          if(!key){            return;          }          var item = this.GetItemByKey("__Default");          if(!item){            item = new KeyValuePair("__Default", key);            this.KeyValues.push(item);          }          else{            item.Value = key;          }          break;        case 2:          // key或value为空          if(!key || !value){            return;          }          var item = this.GetItemByKey(key);          //item为空的时候          if(!item){            item = new KeyValuePair(key, value);            this.KeyValues.push(item);          }          else{            item.Value = value;  

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号