express设置cookie没有被添加到浏览器
发布于 4 个月前 作者 Yankai17148 745 次浏览 来自 问答

新手一枚,今天用express设置登录状态的时候用了res.cookie,在chrome的devtool中也看得到header里有set-cookie,但是就是没有被添加到浏览器里,用req.cookies获取到的是 undefined,下面是代码

res.cookie('isLogin', 1, { expires: new Date(Date.now() + 10000 * 60 * 60 * 24 * 7) });
res.send({success: true, msg: '登录成功'});
8 回复

看了下文档,会不会是类型的问题:

untitled1.png

@maqic

res.cookie('isLogin', '1', { expires: new Date(Date.now() + 10000 * 60 * 60 * 24 * 7) });

这样写的话和之前是一样的,header返回的set-cookie是

set-cookie:isLogin=1; Path=/; Expires=Fri, 04 Nov 2016 05:24:41 GMT
set-cookie:connect.sid=s%3AistHPhEmOtV56vZ0ULn3bIuxPJgIMIKa.Ki88V9WIo%2FzBaxgAiYsY56wTMdGw01ZjT1UArUyt5P0; Path=/; Expires=Fri, 02 Sep 2016 05:24:41 GMT; HttpOnly

@Yankai17148 引入cookie-parser了吗?

@zp1112 引入了 而且确实也能找到返回的cookie QQ图片20160826144613.png 但是就是存不到浏览器里,是和我用的localhost有关系吗?

@Yankai17148 cookie-parser加在路由之前了吗?

var express = require(‘express’); var cookieParser = require(‘cookie-parser’);

var app = express(); app.use(cookieParser());

app.get(’/’, function (req, res) { // 如果请求中的 cookie 存在 isVisit, 则输出 cookie // 否则,设置 cookie 字段 isVisit, 并设置过期时间为1分钟 if (req.cookies.isVisit) { console.log(req.cookies); res.send(“再次欢迎访问”); } else { res.cookie(‘isVisit’, 1, {maxAge: 60 * 1000}); res.send(“欢迎第一次访问”); } }); app.listen(80);

这是最简单的了,你可以再检查看看哪里细节错了

屏幕快照 2016-08-26 下午5.52.00.png

可以看一下是不是因为没有设置默认的domain

请求应该没有跨域吧。没跨域的话,默认应该是能看到 domain 的

还有 connect.sid 应该是 session 级的吧。

回到顶部