Node Express无法使用帖子请求

时间:2015-12-09 11:18:28

标签: node.js session express express-session

我使用node express 4.0来实现消息代码验证功能。 我使用session来存储我发送的msg代码。 我按照dos说的那样设置了会话中间件:

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代码时,我发现会话没有成功设置。

喜欢以下代码:

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值。

那为什么我的帖子方法没有用?

3 个答案:

答案 0 :(得分:3)

我有同样的问题。我一直在使用myDict = { "record": "", "date": "" } 请求,默认情况下它不发送cookie,所以我为GET和POST请求提供了不同的cookie ID。解决方案是:

fetch

有关详细信息,请参阅https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials

答案 1 :(得分:1)

你只需要尝试session.save(),在快递4中你必须提到“resave”,“saveUninitialized”

Locations.txt

答案 2 :(得分:0)

你没有提到你是如何调用POST路由的。您是否发送会话cookie以及POST请求?此外,POST方法返回什么类型的响应?

(在app.js中)

var session = require('express-session');
app.use(session({
  secret: 'sooper_secret',
  resave: false,
  saveUninitialized: false
}));

(在routes / index.js中)

router.post('/post', function (req, res) {
    req.session.test = 'test';
    res.json({success: true});
});

router.get('/get', function (req, res) {
    const results = {
        sessionData: req.session.test || 'session data not found'
    };
    res.json(results);
});

(命令行)

% curl -X POST localhost:3000/post --cookie-jar test.cookie
% {"success":true}

% curl localhost:3000/get --cookie test.cookie
% {"sessionData":"test"}