我在为该域的域和子域设置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);
}
}
}
答案 0 :(得分:0)
您的顶级用户是否完全使用子域名?甚至“www”?
如果不是我认为(老实说这是猜测)问题可能是您指定cookie在所有子域中有效,但不在顶级域中。尝试取出前面的“点”。
例如,如果您的用户正在点击“http://domain.com”,那么我认为不会返回“.domain.com”的Cookie设置。另一方面,如果他们打“www.domain.com”,那么“www”只是另一个子域名,所有这一切都应该有效。
有意义吗?
答案 1 :(得分:0)
我的新手错误是什么。设置cookie函数在此过程的早期被调用,并且根本没有设置任何cookie。
感谢Jim Davis,你的坚持使我更加关注我的代码。