如何修复在 JS 中返回 null 的 cookie

How do I fix cookie returning null in 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)。此外,这发生在托管在网络服务器上的实际应用程序上,而不是从本地主机进行测试。

我终于明白了。原来路径参数值有问题。我替换了

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

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

就是这样。