Javascript获取Cookie问题

时间:2013-03-12 10:50:12

标签: javascript cookies cross-domain

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

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

如果用户直接登陆子域名页面,则cookie设置正确且一切正常,但如果他登陆主域名页面,则不会设置cookie。你能救我吗?

我必须再次确认以下代码在子域设置cookie时起作用,但主域访问没有设置cookie(是的,脚本也在主域页内)。我用萤火虫和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);
        }
    }
}

2 个答案:

答案 0 :(得分:0)

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

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

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

有意义吗?

答案 1 :(得分:0)

我的新手错误是什么。设置cookie函数在此过程的早期被调用,并且根本没有设置任何cookie。

感谢Jim Davis,你的坚持使我更加关注我的代码。