我如何修复cookie返回null在JS



我知道类似的问题在堆栈参考这个问题,但我看着他们,他们没有帮助。我是初学者。

我有一个网站,我想在cookie中存储用户电子邮件,以允许他们访问一些内容。下面是结构

PageA.html(我使用在quirksmode.org上看到的以下代码设置cookie)

用户登录后(输入他们的电子邮件和密码,并且服务器说他们的凭据一切正常),执行这个命令

createCookie("useremail",'account@somewebsite.com',0);

,然后将用户带到发生某些操作的PageB.html。PageB.html的代码试图读取先前在PageA.html

上设置的cookie
readCookie('useremail');

,但结果为null。当我回到前一页时,我在Chrome中检查cookie,我确实看到了cookie。但是,当我进入PageB.html时,它不在那里。下面是我引用的代码:

function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=somewebsite.com/projectX/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}

作为参考,这两个页面位于同一个域(somewebsite.com/projectX/PageA.html和somewebsite.com/projectX/PageB.html)。此外,这发生在托管在web服务器上的实际应用程序上,而不是从localhost进行测试。

我终于想通了。结果是路径参数值有问题。我取代了

document.cookie = name+"="+value+expires+"; path=somewebsite.com/projectX/";

document.cookie = name+"="+value+expires+"; path=/;

就这样了。

相关内容

最新更新