我有一个node.j服务器,我想在收到具有特定值的post请求时更改我的HTML。它是一个登录函数,当登录失败时,我需要某种形式的指示器。
我试过了:
res.send("Login failed").redirect(homepage);但是,当然,它不工作,并使我的服务器崩溃。
我希望将信息发送到客户端,并将用户重定向回原始页面。
下面是我尝试上述行时出现的错误:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:467:11)
at ServerResponse.header (D:\TSN\1.0\Dev\node_modules\express\lib\response.js:771:10)
at ServerResponse.location (D:\TSN\1.0\Dev\node_modules\express\lib\response.js:888:15)
at ServerResponse.redirect (D:\TSN\1.0\Dev\node_modules\express\lib\response.js:926:18)
at Query.<anonymous> (D:\TSN\1.0\Dev\API\routes\Users\usersRouteHandler.js:83:38)
at Query.<anonymous> (D:\TSN\1.0\Dev\node_modules\mysql\lib\Connection.js:525:10)
at Query._callback (D:\TSN\1.0\Dev\node_modules\mysql\lib\Connection.js:491:16)
at Query.Sequence.end (D:\TSN\1.0\Dev\node_modules\mysql\lib\protocol\sequences\Sequence.js:83:24)
at Query._handleFinalResultPacket (D:\TSN\1.0\Dev\node_modules\mysql\lib\protocol\sequences\Query.js:139:8)
at Query.EofPacket (D:\TSN\1.0\Dev\node_modules\mysql\lib\protocol\sequences\Query.js:123:8)发布于 2019-09-12 00:35:50
尝尝这个
res.send(‘<div>text</div>’).redirect(‘/‘)发布于 2019-09-12 01:44:49
这里的问题是您试图在响应已经发送之后设置报头(res.redirect()将报头设置为重定向)。这是不可能的,因为当res.send()完成时,响应已经发送,您不能再重定向。
请尝试使用res.render()。
编辑
您可以将一些数据传递给res.render(),然后在页面中使用它。如果您使用的是模板引擎,则可以在页面中有条件地呈现一条错误消息。
例如,如果用户输入了错误的密码,
你可以这样做,
res.render('auth/loginPage', { showError: true, errorMessage: 'Login Failed' });然后在您的页面模板中,如果showError为真,则有条件地呈现一个错误(请记住,res.render的第二个参数的属性将在呈现时传递到您的模板中)。
<% if (showError) { %>
<div class="user-message user-message--error"><%= errorMessage %></div>
<% } %>这将在登录页面上显示一个错误。
希望这就是你要找的。
https://stackoverflow.com/questions/57893306
复制相似问题