【发布时间】:2018-09-11 02:39:22
【问题描述】:
在接受来自 Axios 的发布请求后,我无法让重定向工作。我确实知道该请求正在发送,并且它至少从“/”路由中获得了一些响应,因为我的控制台记录了“索引”、“用户验证”,这是当有人向“/”发出获取请求时应该发生的情况'。问题是页面无法加载。我什至在谷歌浏览器的网络选项卡中看到 index.js 已加载,但无论我尝试什么,页面都不会改变!这有什么原因吗?
我所做的其他重定向似乎确实有效。例如,如果用户未登录,索引页面将重新路由到 /login。这似乎只是发布请求的问题,我已经在使用和不使用护照身份验证的情况下对其进行了测试(显然更改为您需要登录在重定向),这是相同的结果。所以我不认为护照是造成问题的原因。
你可以参考下面的package.json看看我在用什么
axios 代码:
axios.post('/login', {username: username, password: password})
/*.then(response => res.redirect('/'))*/
.then(function (response) {
console.log(response);
})
.catch(function(error) {
console.log(error);
})
快递方面:我有控制台日志在测试期间提醒自己
server.get('/', (req,res) =>{
console.log("Index");
if (req.user){
console.log("user verified");
res.redirect('/');
app.render(req,res, '/',req.query);
} else {
console.log("user not logged in");
res.redirect('/login');
}
})
server.post('/login', passport.authenticate('local'), (req, res, next) => {
if (req.user) {
console.log("Logging in");
res.redirect('/');
} else {
console.log("Passwrod Incorrect");
return res.redirect('/login');
}
})
package.json
{
"name": "layout-component",
"version": "1.0.0",
"scripts": {
"dev": "node ./server.js",
"build": "next build",
"start": "NODE_ENV=production node ./server.js"
},
"dependencies": {
"@zeit/next-css": "^0.1.5",
"axios": "^0.18.0",
"bcryptjs": "^2.4.3",
"body-parser": "^1.18.2",
"connect-flash": "^0.1.1",
"connect-mongo": "^2.0.1",
"cookie-parser": "^1.4.3",
"express": "^4.16.3",
"express-session": "^1.15.6",
"express-validator": "^5.1.0",
"file-loader": "^1.1.11",
"hoist-non-react-statics": "^2.5.0",
"jsonwebtoken": "^8.2.0",
"mongodb": "^3.0.5",
"mongoose": "^5.0.12",
"next": "^5.1.0",
"passport": "^0.4.0",
"passport-local": "^1.0.0",
"prop-types": "^15.6.1",
"react": "^16.3.0",
"react-dom": "^16.3.0",
"semantic-ui-css": "^2.3.1",
"semantic-ui-react": "^0.79.0",
"url-loader": "^1.0.1"
},
"license": "ISC"
}
【问题讨论】:
-
我假设您正在使用 axios 对服务器进行 ajax 调用。在默认情况下,可能不会考虑来自服务器的 ajax 重定向响应,就像正常的浏览器请求一样。最好向客户端发送 401 响应 json 并从客户端重定向。
-
我认为我根本没有使用 Ajax。我只是在使用acios
-
不确定我是否在使用 Ajax。除非 axios 使用它。你能告诉我你的意思吗?
-
在过去的一天里,我已经解决了这个问题超过 5 个小时,但我无法让它按照应有的方式正常工作。我不确定发布请求是否未正确发送,或者我是否正确接收。我可以 console.log 并查看正在发送的数据(可以打印用户名和密码),还可以看到它尝试重定向索引,甚至从它重定向到的索引页面加载日志记录。浏览器什么都不做。
-
哦。我的 axios 配置是完全默认的。我没有设置任何东西。只需 yarn add axious 并编写 post 函数。我应该写一个配置吗?
标签: node.js reactjs express redirect axios