重定向到POST请求中的URL

时间:2016-09-23 05:07:03

标签: node.js http redirect post

我一直在寻找,但似乎无法找到答案......

我是NodeJS的新手。我正在尝试编写一个服务器,当用户尝试登录时将接收POST请求,然后使用GET重定向到主页,主页现在将显示用户名。

如果网址为home.html,则在页面上显示guest,如果网址为home.html?username=adam,则在页面上显示adam

在我的login.html上,有一个与此类似的表单

<FORM ACTION="login.html" METHOD="POST">
  <CENTER>
  Username: <INPUT TYPE="text" ID="username" required=true><BR>
  Password: <INPUT TYPE="password" ID="password" required=true><BR>
  <INPUT TYPE="SUBMIT">
  </CENTER>
</FORM>

在我的server.js上,我有阻止尝试获取用户名并重定向

http.createServer(function (req, res) {
  if(req.url == "login.html" && req.method == "POST")
  {
    req.on('data', function(chunk) {
      var someData += chunk;
      var username = //get from POST data

      //attempt to redirect
      res.writeHead(200, {"Location":"home,html?username=adam"});
      res.end();
    });
  }
}

我能够获取用户名并将其记录下来,但是当我尝试重定向时,该页面显示为空白,并且该网址仍然显示为login.html ...

我甚至不确定我是否正确行事,请帮忙。

1 个答案:

答案 0 :(得分:0)

由于您不熟悉nodejs,请尝试使用REST API进行通信,而不是直接重定向到其他页面。

要检索服务器js中的表单数据,您需要安装主体解析器,详细信息如下:

[https://github.com/expressjs/body-parser][1]

然后更新您的服务器js如下:

var app = require('express')();
var http = require('http').Server(app);
var bodyParser = require('body-parser')

app.use(bodyParser());

app.get('/login', function (req, res) {
    res.sendfile('login.html');
});
app.get('/home', function (req, res) {
    res.sendfile('home.html');
});
app.post('/login', function (req, res) {

    console.log("Username:",req.body.username);
    console.log("password:",req.body.password);//just for reference do not show anywhere
    res.redirect('/home?username='+req.body.username);
});



http.listen(3000, function () {
    console.log('listening on *:3000');
});

您的登录login.html将如下所示:

<FORM ACTION="/login" METHOD="POST">
  <CENTER>
  Username: <INPUT TYPE="text" name="username" ID="username" required=true><BR>
  Password: <INPUT TYPE="password" name="password" ID="password" required=true><BR>
  <INPUT TYPE="SUBMIT">
  </CENTER>
</FORM>

在主页上做必要的操作,因为现在你可以使用url上的用户名...希望这个帮助..我知道如果有任何疑问。快乐的编码:)