首页 > 解决方案 > 使用渲染时将标头发送到客户端后无法设置标头

问题描述

作为新页面登录后,我试图获取 hbs 文件

这是我的登录

app.post('/auth', function(request, response) {
var username = request.body.username;
var password = request.body.password;
if (username && password) {
    db.query('SELECT * FROM accounts WHERE username = ? AND password = ?', [username, password], function(error, results, fields) {
        if (results.length > 0) {
            request.session.loggedin = true;
            request.session.username = username;
            response.redirect('/home');
        } else {
            response.send('Incorrect Username and/or Password!');

        }           
        response.end();
    });
} else {
    response.send('Please enter Username and Password!');
    response.end();
}
});

如果授权,这是我的功能

app.get('/home', function(request, response) {
if (request.session.loggedin) {
    //here is getting an error
    response.render('home');
} else {
    response.send('Please login to view this page!');
}
response.end();
});

错误信息

发送到客户端后无法设置标头

我的目录

在此处输入图像描述

标签: node.js

解决方案


response.end()从所有处理程序中删除。

两者都response.redirect()已经response.send()完成了响应。无需response.end()在他们之后打电话。

只有像response.write()which 这样的东西可以被多次调用并且不能自己完成响应才需要 a .end()


推荐阅读