简体   繁体   English

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

[英]Why I cannot post data in express with nodes?

Below is my code下面是我的代码

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);

Everything is ok, I can input user/123456789 and then show Logout link.一切正常,我可以输入 user/123456789 然后显示注销链接。 However, after I click Logout link, it shows "Cannot GET /logout" on the page.但是,在我单击注销链接后,它在页面上显示“无法获取/注销”。

Did I missing something?我错过了什么吗?

You only have a route for a POST operation for /logout .您只有/logoutPOST操作路由。 Clicking on a link would generate a GET request, not a POST .单击链接将生成GET请求,而不是POST

Perhaps you mean to change this to a GET handler like this - change login.post() to login.get() :也许您的意思是将其更改为这样的 GET 处理程序 - 将login.post()更改为login.get()

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM