我在后端使用ExpressJs,在前端使用ReactJS。服务器在localhost:3000上运行,客户端在localhost:8080上运行。他们成功登录后,我想将用户重定向到“聊天”页面。所以我在服务器中有代码:
(req, res) => {
//doing some authenticate actions up here
if (/*successful*/) {
//some actions here
res.redirect("/chat");
}
//actions on failure down here
};
但是登录该帐户后,出现此错误
GET http://localhost:8080/chat 404 (Not Found)
http://localhost:8080/chat
存在并且由客户端处理,如果我在地址栏中键入它并进入,我仍然可以访问“聊天”页面。
我还有处理任何与服务器路由不匹配的请求的代码,因此可以将请求发送到客户端进行处理:
app.get("*", (req, res) => {
res.sendFile(path.join(__dirname, "client/dist/index.html"));
});
我的代码有什么问题?我错过了什么吗?
答案 0 :(得分:2)
从API成功响应后,您应该重定向用户。后端不能更好地处理它,因为您只有一个页面应用程序,从技术上讲它没有服务器可以识别的其他页面,这就是为什么当您尝试重定向到http://localhost:8080/chat
时收到404错误的原因。它仅知道为您的捆绑包提供响应代码的index.html
文件。之所以能够在地址栏中输入/chat
是因为您的用户界面已设置为可以处理来自所使用路由器的请求。不是服务器将您引导到那里。
这应该很简单,这是一个示例:
logUserIn = async (userData) => {
const isAuthed = await authenticateUser(userData)
if (isAuthed) {
this.props.history.push('/chat');
} else {
console.log('User not found!');
}
}