我是node.js的新手... 我会为学校项目创建一个聊天应用程序,但是节点模块“ express”存在一些问题。 错误在于res.redirect('/');
var app = express();
var sess;
app.use(session({
secret: 'secret',
resave: true,
saveUninitialized: true
}));
app.get('/auth', function (req, res) {
var type = req.query.type;
sess = req.session;
if (type === "login") {
if (sess.loggedin) {
return res.redirect('/');
} else {
res.sendFile(__dirname + "/views/login.html");
}
}
});
app.post('/auth', function (req, res) {
var type = req.query.type;
sess = req.session;
if (type === "login") {
var login = req.body.login;
var password = req.body.password;
if (login === "" || password === "") {
res.send('You need to fill all inputs!');
res.end();
} else {
mysql query {
if (results.length > 0) {
res.send('Logged In');
sess.loggedin = true;
sess.username = results[0].username;
/* ERROR! --> return res.redirect('/'); <-- ERROR! */
} else {
res.send('Incorrect Username and/or Password!');
res.end();
}
res.end();
});
}
}
});
我观看了youtube视频并阅读了论坛,但没有找到解决方案... 如果您能帮助我,那就太好了:)
答案 0 :(得分:0)
这是因为您已经用res.send('Logged In')
发送了回复。 HTTP请求始终是单个请求和单个响应。下面的代码段摘自您的代码以显示发生的情况。
res.send('Logged In'); // <-- Sends a response
res.redirect('/'); // <-- Sends another response in form of redirect.
send
方法发送一个字符串作为响应,客户端将接收该字符串。因此,现在响应头已经设置好,无法发送其他响应。
先发送一条消息然后重定向,这没有多大意义。您将没有时间阅读消息,因为您导航到其他页面。丢掉res.send
,看看会发生什么。