我一直在寻找,但似乎无法找到答案......
我是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 ...
我甚至不确定我是否正确行事,请帮忙。
答案 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上的用户名...希望这个帮助..我知道如果有任何疑问。快乐的编码:)