保存Cookies,然后在新标签中打开链接

时间:2012-03-23 04:52:52

标签: javascript cookies

我有一些保存cookie的JavaScript代码。但是,如果在保存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;
}

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);
        }
    }
}

如果某些JavaScript调用setCookie('mycookie', 1),然后用户点击_target设置为_blank的链接,则Cookie不会加载到新标签中。因此getCookie('mycookie')不会返回1

这里有什么问题?

2 个答案:

答案 0 :(得分:1)

我想我已经明白了。

我在一个子目录中设置cookie,然后在另一个子目录中读取它。所以我在www.example.com/foo/上设置了Cookie,然后在www.example.com/bar/上加载了一个新标签,并且Cookie不再存在。我认为上面的setCookie函数没有正确处理这个问题。我的解决方案是使用more robust cookie library

答案 1 :(得分:0)

这可能是一个安全问题,特别是如果这两个页面位于不同的域/子域

阅读此Question on SO并尝试实施