快速设置客户端可访问的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 });?