首页 > JavaScript > JavaScript cookie与domain
2010三月2

JavaScript cookie与domain

在使用JavaScript设置cookie时,懒的时候经常忘记设置domain,但是昨天就遇到了一个奇怪的问题。

同名的 cookie,不同的 domain 或不同的 path,属不同的 cookie;
同名的 cookie,相同的 domain 且相同的 path,不同的 expires,属同一个 cookie。

由于页面重载,会导致我一个页面有两个setCookie函数,但是其中一个指定了domain,另一个没有指定,这样就存在了问题。即,当我想要删除一个cookie的时候,我需要把两个domain下的cookie值都给置为过期,否则不起作用。

因为JavaScript中,函数是可以进行重载的。而原因我却找了半天,看来自己对cookie的理解还是属于一知半解的水平。残念啊。。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <title>cookie demo</title>
</head>

<body>

<script type="text/javascript">
    function getCookie(name){
        var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
        if(arr=document.cookie.match(reg)) return unescape(arr[2]);
        else return null;
    }
    function setCookie(name,value)
    {
        alert('这是第一个setCookie');
        var expire = arguments[2] ? arguments[2] : 365*24*60*60*1000;
        var exp = new Date();
        exp.setTime(exp.getTime() + expire);
        document.cookie = name + "="+ escape (value) + ";path=/;expires=" + exp.toGMTString();
    }
   
    function setCookieValue(name,value){
        setCookie(name,value);
    }
   
    setCookieValue('name','value1');
</script>

    <input type="button" value="setCookie" onclick="setCookieValue('name','value2')" />
    <input type="button" value="getCookie" onclick="alert(getCookie('name'))" />
    <input type="button" value="getAll" onclick="alert(document.cookie);" />
    <script type="text/javascript" src="cookie.js"></script>
</body>
</html>
function setCookie(name,value)
{
        alert('这是第二个setCookie');
        var expire = arguments[2] ? arguments[2] : 365*24*60*60*1000;
        var exp = new Date();
        exp.setTime(exp.getTime() + expire);
        var domain = "xiaoxiaozi.com";
        document.cookie = name + "="+ escape (value) + ";domain="+domain+";path=/;expires=" + exp.toGMTString();
}

演示地址:http://www.xiaoxiaozi.com/code/demo/cookie.html

大家可以看到,首先调用的是第一个setCookie函数,而按钮调用的是第二个setCookie函数

allcookie

让我们看一下为何有两个同名的cookie
同明cookie

完全是因为domain不同,可悲啊。。

文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2010/03/02/1711/
版权所有 © 转载时必须以链接形式注明作者和原始出处!

本文目前尚无任何评论.

发表评论

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)