jquery-ajax - 使用AJAX(jquery)(json)时后台node.js(express)不能使用res.redirect重定向?
本文介绍了jquery-ajax - 使用AJAX(jquery)(json)时后台node.js(express)不能使用res.redirect重定向?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
首先这个问题我已经解决了。
我利用json传值将express重定向的res.redirect值传回前端
前端用window.location.href打开新的url。
这是我的代码
前端js文件:
$.ajax({ type: "POST", url: "/login", data: JSON.stringify({ "cardID":cardID }), dataType: "json", contentType: "application/json", success: function(response) { window.location.href=response.url; }, error:function(response){ console.log("err"); } });
node js express文件
app.post('/login', function (req, res, next) { res.json(200,{msg:"Login success",url:"/mainindex"}); }
我这种解决方法也不是不行,但是这样就要用前端来控制url的重定向,这样可能不太安全或者不太好。
因为如果我js代码利用了ajax传值,而且制定json格式的话。我后台的res.redirect('/mainindex')
;就没有效果,而且会出现http表头重复的现象。
请问大神们还有什么办法解决?
解决方案
其实我自己想了一下是想明白了。我的需求也必须用到AJAX。如果不用AJAX难道要用url带参数的冒着被注入攻击的风险传密码值吗?
我来好好的解释下,首先用了AJAX的确就无法重定向,这个问题是没有办法的,因为AJAX使用之后他是完整的一个请求和回调的过程,在这个过程里面只存在一个HTTP表头,如果你重定向就会重复,就会报错。
使用AJAX就是在同一个界面的东西,不能重定向到其他界面就打破AJAX的整个请求过程, 因为redirect这个函数改变的是AJAX请求中间的定向,这就打破了AJAX整个流程。
所以如果你想做一个登陆界面,那么只有AJAX返回打开下一步的url,然后前端进行调转吧。
或者不用AJAX。
这篇关于jquery-ajax - 使用AJAX(jquery)(json)时后台node.js(express)不能使用res.redirect重定向?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文