Node Express 无法通过 post 请求设置会话"/>
Node Express 无法通过 post 请求设置会话
我使用node express 4.0实现消息验证码功能。 我使用会话来存储我发送的消息代码。 我按照dos设置session中间件:
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(cookieParser());
app.use(session({secret:'ssssss'}));
app.use(express.static(path.join(__dirname, 'public')));
app.use('/uploads', express.static(path.join(__dirname, 'uploads/temp')));
但是当我用post方法获取msg代码时,发现session没有设置成功
喜欢下面的代码:
router.post('/msgCode', function(req, res) {
req.session.test = 'test';
// request send msg code api then response
}
当我重新发布这个路由器时,我发现
req.session.test
是未定义的。
然后我在另一个路由器上试试这个:
router.get('/sendMsgTest', function(req, res) {
req.session.test = 'test';
res.json({
status:0
})
}
每次我请求
sendMsgTest
,我都能得到req.session.test
。当我请求另一个get
方法时,我可以成功获得req.session.test
值。
那为什么我的post方法不起作用?
回答如下:我有同样的问题。我一直在使用
fetch
进行请求,默认情况下它不发送 cookie,所以我为 GET 和 POST 请求获得了不同的 cookie id。解决方案是:
fetch(url, {
credentials: 'same-origin' // or 'include'
});
有关更多信息,请参阅https://developer.mozilla/en-US/docs/Web/API/Request/credentials。
更多推荐
Node Express 无法通过 post 请求设置会话
发布评论