我正在开发一个使用Express和SocketIO的Node应用程序。我想在我的Express控制器中设置一个cookie,然后可以从客户端JavaScript代码中访问它。但是我尝试的所有方法似乎都不起作用:
res.setHeader('Set-Cookie','test=value');
res.cookie('rememberme', 'yes', { maxAge: 900000 });
这里有什么我错过的吗?提前感谢!
我正在开发一个使用Express和SocketIO的Node应用程序。我想在我的Express控制器中设置一个cookie,然后可以从客户端JavaScript代码中访问它。但是我尝试的所有方法似乎都不起作用:
res.setHeader('Set-Cookie','test=value');
res.cookie('rememberme', 'yes', { maxAge: 900000 });
这里有什么我错过的吗?提前感谢!
我想通了!默认情况下,Express将httpOnly选项设置为true。这意味着客户端JavaScript无法访问您的Cookie。要正确设置可由客户端访问的Cookie,请使用以下代码片段:
res.cookie('rememberme', 'yes', { maxAge: 900000, httpOnly: false});
我也注意到,如果您调用此命令,然后调用res.redirect,cookie将不会被设置。必须在某个时刻跟随此命令调用res.render才能使其正常工作。不确定为什么会这样。
res.cookies
对象来读取 Express 中的 cookie。例如,名为 session_id
的 cookie 存在于 res.cookies.session_id
。请参考链接 http://expressjs.com/api.html#req.cookies。 - frontendbeautyreq.cookies
而不是 res.cookies
。 - chichilatteres.cookie("mycookie", "1234567890", { secure:true, maxAge:120000, httpOnly: true });
那么要在HTTP中访问,我们可以使用:
res.cookie("mycookie", "1234567890", { secure:false, maxAge:120000, httpOnly: true });?