document.cookie的问题:在localhost中工作但在Web Hosting上返回Empty

时间:2017-11-24 07:18:18

标签: javascript node.js reactjs express cookies

我一直在搜索很多很多来源,但似乎没有任何描述我的情况。

我目前正在尝试开发一个网站(ReactJS)和一个后端(NodeJS w / Express)。假设在生成时分别可以example.comexample.com/api访问它们,然后在开发时localhostlocalhost:3030访问它们。 Cookie由API设置。

在我的本地计算机上的浏览器控制台中输入alert(document.cookie)输出我的非HTTPOnly cookie。但是,当我在我的虚拟主机上尝试此操作时,它只返回一个空警告框,表示document.cookie是一个空字符串""。这是在Opera,Firefox和Chrome上测试的。

我也尝试从我的Node应用程序中为我的会话cookie取消设置HTTPOnly和安全标志,但这也不会写入警报输出。

有谁在这里知道为什么会发生这种情况和/或如何使这项工作?谢谢!

编辑:这是我在NodeJS上设置我的cookie的方式

app.use(function (req, res, next) {
    res.cookie("My-Cookie", random());
    next();
})

EDIT2:我想这是CORS实际工作的一个问题。但我仍然不明白为什么我的localhost版本工作,即使它也是CORS。

1 个答案:

答案 0 :(得分:1)

原来这个问题与Set-Cookie域有关。首先,当我在浏览器中打开www.example.com时,我的Cookie设置为example.com。其次,我通过在所有cookie设置上指定{domain}选项来修复此问题,包括cookie生成器,如下所示:

app.use(function (req, res, next) {
    res.cookie("My-Cookie", random(), { domain: '.example.com' });
    next();
});

现在我可以打开www.example.comexample.comdocument.cookie会按预期返回Cookie值。

希望这可以帮助那些不知道这种限制的人。