我在为该域的域和子域设置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);
}
}
}
您的顶级用户是否使用子域名?甚至"www"?
如果不是,我认为(老实说,这是一个猜测)的问题可能是你指定的cookie是有效的,在所有子域,但不是在顶级域。试着去掉前面的"点"。
例如,如果你的用户正在点击"http://domain.com",那么我不认为cookie设置为"。domain.com"将返回。另一方面,如果他们点击"www.domain.com",那么"www"只是另一个子域名,所有这些都应该工作。
有意义吗?
我真是个新手犯的错误。set cookie函数在流程的早期被调用,并且根本没有设置任何cookie。
谢谢Jim Davis,你的坚持让我更仔细地看我的代码。