为什么我不能用节点在express中发布数据?

时间:2015-09-23 18:44:58

标签: javascript node.js express

以下是我的代码

var express = require("express");
var app = express();
var session = require('express-session');
var login = express.Router();
var bodyParser = require("body-parser");

app.use(bodyParser.urlencoded({ extended: false }));
app.use(session({
  secret: "HelloExpressSESSION",
  resave: true,
  saveUninitialized: true
}));

login.get('/login_page', function(req, res){
  if(req.session.logined) {
      res.send('<a href=\"/logout\">Logout</a>');
      res.end();
      return;
   }

res.send('<form action=\"/login\" method=\"POST\">' +
    '<input type=\"text\" name=\"username\">' +
    '<br/>' +
    '<input type=\"password\" name=\"password\">' +
    '<br/>' +
    '<input type=\"submit\" value=\"Log In\">' +
    '</form>');
  res.end();
});

login.post('/login', function(req, res) {
  if(req.body.username != 'user' || req.body.password != '123456789') {
      res.send('Wrong information!');
      res.end();
      return;
  }

req.session.logined = true;
  console.log("hi");
  res.redirect('/login_page');
  res.end();
});

login.post('/logout', function(req, res) {
  req.session.logined = false;
  res.redirect('/login');
  res.end();
});

app.use('/', login);
app.listen(12345);

一切正常,我可以输入user / 123456789然后显示Logout链接。 但是,在我单击“注销”链接后,它会在页面上显示“无法获取/注销”。

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

POST只有/logout操作的路线。点击链接会生成GET个请求,而不是POST

也许您的意思是将此更改为这样的GET处理程序 - 将login.post()更改为login.get()

login.get('/logout', function(req, res) {
  req.session.logined = false;
  res.redirect('/login');
  res.end();
});