如何在JavaScript中设置cookie

来源:互联网 发布:淘宝标品系统 编辑:程序博客网 时间:2024/05/02 02:52

cookie的最基本的存储形式是“name=value”,
所以用JavaScript创建cookie的最简单的语法就是document.cookie="name=value";
一般来说都会为cookie的存储,读取,删除设置不同的函数,方便在程序中进行调用。

   

   //存储cookie
    function setCookie(name,value)
    {
        var args=setCookie.arguments;
        var len=setCookie.arguments.length;
        var expires=(len>2)?args[2]:"";
        var path=(len>3)?args[3]:"";
        var domain=(len>4)?args[4]:"";
        var secure=(len>5)?args[5]:false;
        document.cookie=name+"="+escape(value)+((expires=="")?"":(";expires="+expires.toGMTString()))+
        ((path=="")?"":(";path="+path))+((domain=="")?"":(";domain="+domain))+(secure?";secure":"");
            
    }
    这里默认的2个参数是必须的,第一个代表cookie的名字,第2个参数代表cookie的值
   

   另外可选的第3个参数代表cookie的生存期,这个参数的值必须是GMT格式的日期型字符串,代表这个cookie的过期时间,
    假如你想要这个cookie一天之后过期,可以执行如下代码:
    var now =new Date();
    now.setDate(now.getDate()+1);
    然后将now作为第3个参数传入即可。
   

    第4个参数用来设置cookie的路径,因为默认情况下cookie只可被创建它的网页或者与该网页在同一目录或者子目录下的所有网页访问
    如果要让该网页父目录的网页也能访问,则要将path的值设为相对于该网页的相对路径。
    比如http://www.myWeb.com/a/b/test.html创建的cookie,将path设为“a/”,则http://www.myWeb.com/a/路径中的网页也能访问该cookie,
    如果想整个网站都能访问该cookie,则需要将path设置为网站根目录,即“/”
   

    第5个参数表示cookie的域,默认情况下www.myWeb.com和bbs.myWeb.com属于不同的域,即这2个服务器的网页不能互相访问cookie,将domain设置 
    为“.myWeb.com”之后,就可以互相访问了
    第6个参数用来设置cookie的secure,如果为true,表示cookie只能通过https或其它安全协议才能被传输。
    一般来说为将cookie的值编码,所以用到了escape(value)

 

    //读取cookie
    function getCookie(name)
    {
        var mycookie=unescape(document.cookie);
        var cindex=mycookie.indexOf(name+"=");
        if(cindex!=-1)
        {
            var cstart=cindex+name.length+1;
            var cend=mycookie.indexOf(";",cstart);
            //如果找不到分号,则取cookie的最后
            if(cend==-1)
            {
                cend=mycookie.length;
            }
            return mycookie.substring(cstart,cend);
        }
    }
    //删除cookie
    function delCookie(name)
    {
        var time = new Date();
        time.setTime(time.getTime() - 1);
        var value = getCookie(name);
        document.cookie = name + "=" + value + ";expires=" + time.toGMTString();
    }
    cookie是不能被删除的,要删除某个cookie实际上就是将该cookie的expires设置为过期时间