0

我在为该域的域和子域设置 cookie 时遇到困难。虽然我不能透露域名,但我可以将其命名为“domain.com”并提供代码。

我正在尝试实现以下目标:访问者来到 domain.com 并设置了某些 cookie。当他到达 subdomain.domain.com 上的某个页面时,必须读取这些 cookie。

如果用户直接登陆子域页面,cookie 设置正确,一切正常,但如果他登陆主域页面,则没有设置 cookie。你能帮助我吗?

我必须再次重申,当子域设置 cookie 但主域访问没有设置 cookie 时,以下代码有效(是的,脚本也在主域页面中)。我已经用 firebug 和 firecookie 进行了测试。

这是我设置 cookie 的代码:

function setCookie(c_name,value) {
    var now = new Date();
    var time = now.getTime();
    time += 3600 * 1000;
    now.setTime(time);
    var c_value=escape(value);
    document.cookie=c_name + "=" + c_value + '; path=/;domain=.domain.com';
}

这是我获取 cookie 值的代码:

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

2 回答 2

0

您的顶级用户是否使用子域?甚至“www”?

如果不是,我认为(老实说,这是一个猜测),问题可能在于您指定 cookie 在所有子域中都有效,但在顶级域中无效。尝试取出前面的“点”。

例如,如果您的用户正在点击“ http://domain.com ”,那么我认为不会返回为“.domain.com”设置的 cookie。另一方面,如果他们点击“www.domain.com”,那么“www”只是另一个子域,所有这些都应该有效。

有道理?

于 2013-03-12T16:14:36.813 回答
0

对我来说这是一个新手错误。set cookie 函数在该过程的早期被调用,并且根本没有设置任何 cookie。

Thanks Jim Davis, your persistence made me look more closely to my code.

于 2013-03-15T08:31:07.833 回答