【发布时间】:2017-11-24 18:38:37
【问题描述】:
我一直在搜索大量资源,但似乎没有任何内容能描述我的情况。
我目前正在尝试开发一个网站 (ReactJS) 和一个后端 (NodeJS w/ Express)。假设它们分别在生产时可通过example.com 和example.com/api 访问,然后在开发时可通过localhost 和localhost: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。
【问题讨论】:
-
所以您想访问您在
localhost上设置/创建的example.com上的cookie? -
我想读取由
example.com/api设置的example.com上的cookie 但不起作用。另一方面,我可以在由localhost:3030设置的localhost上输出document.cookie -
所以基本上你的源代码在本地运行 (
localhost) 时可以工作,但不能在公共域名上工作。可能您应该更新您的问题并包含一些相关的源代码,例如创建 cookie 并尝试访问 cookie?谢谢。 -
要访问 cookie,我在控制台中尝试了
alert(document.cookie),正如我在帖子中描述的那样。我已将我的 cookie 生成器放在帖子中,尽管在我的代码中它是动态生成的。 -
@NewToJS 傻我。 cookie 是为
www.example.com而不是example.com设置的。用www打开我的页面解决了它。但我仍然想知道如何在没有www或其他方式的情况下使其也能正常工作。
标签: javascript node.js reactjs express cookies