cookie进阶学习[原创]

介绍:

  Cookie记录访问某点的的信息,它其实驻留在用的硬上,即使用某站点,cookie在用的硬上仍然存在,如果次返回那个站点,则该cookie就会被一起回到该站点的服器中,便于站点的管理者统计理重访者的信息。

注意:Cookies被引入Netscape 2.0MSIE 3.0,但是MSIE 3.0cookies用不是太完善。可以利用cookies的用算机上保存和取信息,但却不能将cookie保存在自己的算机上,所以cookie测试造成一定的困所以如果使用的是MSIE 3.0,最好将其升级为MSIE 4.0或者改用Netscape,好像大家都使用MSIE 6.0以上,所以也没有什顾虑。)

 

深入:

  由于cookies扯到向用的硬取信息,所以就一个保密性的问题。如果需要大量使用cookies应该阅读一下Marc Slayton写的cooikies密以及重新考察cookies些文章将告cookie实质和作用范以及其内在的局限性。其最重要的局限性在于:不是个人的浏览器都cookies。即便是用浏览cookies,但用也有可能拒cookies访问(大部分人迎的),个域名只分配20cookies,所以要省着使用它Cookies不得大于4KB,当然4,000的容量是足的了

置一个基本的cookie很容易.你所需做的只是在一个cookie_name=value中生成一个字符串,然后document.cookie属性.唯一的技巧:cookie中不能有空格,逗号或分号.好在你无需担心问题,因有一系列的函数可以帮你cookies属性编码和解escape()unescape()

例:var the_cookie = escape(the_name);

document.cookie =the_cookie;

escape()the_name内的空格用%20做替,unescape()将其反替换为空格。


读取:

  使用document.cookie读取与网页有关的cookie
例:
var cookieUserInfo = "userinfo=name:zhoulei/age:25/sex:man";
document.cookie = cookieUserInfo;
斜杠/和冒号是不是绝对的选择,可以使用任何的字符做分割的标志,只要注意在对cookie解码时也使用同样的限位器即可
1.一个cookie的读取,包含若干信息

 

  网页A
    var cookieUserInfo = "userinfo=name:zhoulei/age:25/sex:man";
    document.cookie = cookieUserInfo;

 

网页B

  setCookieArraydocument.cookie

  function setCookieArray(cookieValue){

    var cookieArray = new Array();

    if (cookieValue == '' || cookieValue == null){

      return null;

    }

    var separated_values = cookieValue.split("/");

    for (var loop=0; loop < separated_values.length; loop++){

      var broken_info = separated_values[loop].split(":");

      var the_property = broken_info[0];

      var the_value = broken_info[1];

      cookieArray[the_property] = the_value;

    }

    return cookieArray;

}


2.多个cookie取,包含若干信息

 

  网页A
    var cookieUserInfo = "userinfo=name:zhoulei/age:25/sex:man";
    var cookieSystemInfo = "systeminfo=hostname:192.168.0.1/os:windowsXP/database:oracle";
    document.cookie = cookieUserInfo;
    document.cookie = cookieSystemInfo;

 

 

网页B

setCookieArray(getCookieValue("userinfo"));

 

// 读取页面Cookie内指定的单个Cookie
    function getCookieValue(name){

    var retValue;

    if (document.cookie == '') {

      return null;

    }

    var firstChar, laseChar;

    var cookieTemp = document.cookie;

    firstChar = cookieTemp.indexOf(name);

    if (firstChar != -1){

      firstChar += name.length + 1;

      laseChar = cookieTemp.indexOf(";", firstChar);

      if (laseChar == -1){

        laseChar = cookieTemp.length;

      }

      retValue = cookieTemp.substring(firstChar, laseChar);

      return retValue;

    } else {

      return null;

    }

}
    
    // 
分解单个Cookie内包含的多个信息成为相关数组
    function setCookieArray(cookieValue){

    var cookieArray = new Array();

    if (cookieValue == '' || cookieValue == null){

      return null;

    }

    var separated_values = cookieValue.split("/");

    for (var loop=0; loop < separated_values.length; loop++){

      var broken_info = separated_values[loop].split(":");

      var the_property = broken_info[0];

      var the_value = broken_info[1];

      cookieArray[the_property] = the_value; 

}

    return cookieArray;

}

 




效:

Cookie常常在用户关闭浏览会被自动删如果希望Cookie失效时间,需要一叫做GMT的特殊格式。
例:

Mon, 27-Apr-1998 00:00:00 GMT

Javascript有一个日期的方法叫做toGMTString可以轻松设置GMT

例:var the_date = new Date("December 31, 2023");
var the_cookie_date =the_date.toGMTString();

一旦设置了cookie的失效期,其cookie的信息设置应为:
document.cookie =
"userinfo=name:zhoulei/age:25/sex:man;expires=the_cookie_date";



路径和域

"path=/;domain=sina.com.cn;"

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值