快速设置客户端可访问的Cookie

我正在使用Express和SocketIO的Node应用程序。 我想在我的Express控制器中设置一个cookie,然后从我的客户端Javascript代码访问它。 我所尝试的一切似乎都不起作用:

res.setHeader('Set-Cookie','test=value'); res.cookie('rememberme', 'yes', { maxAge: 900000 }); 

有什么我在这里失踪? 提前致谢!

弄清楚了! 默认情况下,Express将选项httpOnly设置为true。 这意味着你的cookies不能被客户端的Javascript访问。 为了正确设置客户端访问Cookie,只需使用如下所示的代码片段:

 res.cookie('rememberme', 'yes', { maxAge: 900000, httpOnly: false}); 

我也注意到,如果你调用这个命令,然后调用res.redirect,cookie将不会被设置。 这个命令需要在res.render之后的某个时刻才能起作用。 不知道这是为什么。

其实我已经经历了几个小时的同样的问题。

这是我的代码:

 res.cookie("mycookie", "1234567890", { secure:true, maxAge:120000, httpOnly: true }); 

我可以在响应标题中看到Set-Cookie指令,但是在Chrome中我无法findcookie,而且我无法通过req.cookies ['mycookie']findcookie。

这个问题的根本原因是我没有使用HTTPS连接。 (Express 4.x与cookieparsing器中间件)

根据这个文件: 简单的步骤来保护你的快递节点的应用程序

如果我将选项设置为secure = true,那么浏览器将不会在任何HTTP请求中发送我的cookie,但HTTPS安全连接。 然后,我删除安全:真正的select,我得到了我的cookies工作。

所以访问http可以使用:

 res.cookie("mycookie", "1234567890", { secure:false, maxAge:120000, httpOnly: true });?