我的admin.js控制器文件中包含以下内容
module.exports = {
getAdmin: async (req, res) => {
let ref = req.headers.referer;
if ((ref === undefined) || (!ref.includes('user'))) {
res.writeHead(301,
{Location: '/'}
);
res.end();
res.render('admin', { indexCSS: true })
}
}
我想做的是,如果用户来自/user
,他可以访问/admin
页面,否则他将被重定向到/
,即home
。如果用户来自有效的引荐来源网址,该方法就可以使用,但是当我尝试直接转到该路由时,它可以正确重定向,但应用程序崩溃了,并且出现了错误Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
有没有一种方法可以重定向而不会出现该错误。
我的方法做错了什么
预先感谢
请注意,这不包括身份验证
答案 0 :(得分:0)
res.end()
不能像函数返回一样工作。之所以会出现此错误,是因为在使用writeHead res.end()
之后调用了该方法,该方法发送回响应,然后代码尝试呈现“ admin”
module.exports = {
getAdmin: async (req, res) => {
let ref = req.headers.referer;
if ((ref === undefined) || (!ref.includes('user'))) {
res.writeHead(301, {
Location: '/'
});
} else {
res.render('admin', {
indexCSS: true
})
}
res.end()
}