zoukankan      html  css  js  c++  java
  • javascript cookie

    document.cookie存放了所有的cookie,世界上是一个字符串。形式类似下面的:

    fur=blue; food=biscuits; name=Cookie_monster;

    每个cookie有 ;分开。

    当创建cookie时,一定要确保名字和值不包括空格,逗号或分号。这些字符会在解析cookie时造成错误。在通过http头传输cookie的时候也会引起麻烦。要想在cookie中使用这些字符,最简单的方法是使用escape函数。这个函数会将所有的特殊字符转义。

    当读取cookie时,需要使用unescape解除转义。不要对=进行转义,它是作为cookie 的key value分隔符而存在的。

     写入cookie直接把cookie 赋值给document.cookie。它的行为方式有点特别。他原先的值不会被想普通的字符串那样被覆盖掉,而是在源字符串末尾加上新值。如果cookie名已经存在了,原有的值会被覆盖掉。

    创建cookie

    function setCookie(c_name,value,exdays)
    {
    var exdate=new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
    document.cookie=c_name + "=" + c_value;
    }

    设定cookie过期时间

     过期时间加在cookie末尾,他也需要一个分号和其他的cookie字符串分开。然后接着是字符串expires= .时间必须用格林威治

    时间来指定。

    function getCookie(c_name)
    {
    var i,x,y,ARRcookies=document.cookie.split(";");
    for (i=0;i<ARRcookies.length;i++)
    {
      x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
      y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
      x=x.replace(/^\s+|\s+$/g,"");
      if (x==c_name)
        {
        return unescape(y);
        }
      }
    }

    或者:

    function getCookie(searchName)
    {
        var cookies=document.cookie.split(";");
        for(var i=0;i<cookies.length;i++)
        {
            var cookieCrumbs=cookies[i].split("=");
            var cookieName=cookieCrumbs[0];
            var cookieValue=cookieCrumbs[1];
            if(cookieName==searchName)
            {
                return cookieValue;
            }
        }
        return false;
    }

    使cookie只能通过特定的域和路径访问。

     在默认情况下,如果设置了一个cookie,那么这个cookie只能被这个域的其他页面访问,所以如果http://js.sitepoint.com的页面写入了cookie,那么Http://php.sitepoint.com的页面无法访问该cookie。为了允许sitepoint的所以子域访问该cookie,在cookie创建的时候需要指定域范围。在cookie后面加上";domain=domainNam"即可

     theCookie+=";domain=sitepoint.com";

    document.cookie=theCookie;

    现在这个cookie可以被sitepoint的所以子域的页面读取。包含sitepoint.com。

     l另外一个访问现在条件是,在默认情况下,cookie只能被同在当前目录中的其他页面或当前目录的子目录中页面访问。所以

    http://www.sitepoint.com/scripts/cookie_html 写了一个cookie,

    http://www.sitepoint.com/kermit.html 将无法访问。

     可以设定允许读取cookie目录的层级。只需在cookie字符串末尾加上一句";path=pathName"即可。

    theCookie+=";path=/";

    document.cookie=thecookie;

    在该cookie可以被根目录下的所有页面读取。那意味着这个网站的所有页面都可以读取该cookie。

    ppk写的3个函数:

    function createCookie(name,value,days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000)); .//改成更好exdate.setDate(exdate.getDate() + exdays);
    var expires = "; expires="+date.toGMTString();
        }
        else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
    }
    
    function readCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
    }
    
    function eraseCookie(name) {
        createCookie(name,"",-1);
    }

    http://www.quirksmode.org/js/cookies.html

  • 相关阅读:
    条件编译
    宏定义
    联合体,枚举类型
    结构体的概念
    C#程序报找不到时区错误
    C# ArrayList和List的区别
    C# 无法将类型为“__DynamicallyInvokableAttribute”的对象强制转换为类型...
    C# readonly与const区别
    C#特性
    Linux vsftpd 安装配置使用
  • 原文地址:https://www.cnblogs.com/youxin/p/2698530.html
Copyright © 2011-2022 走看看