使用AJAX(jquery)(json)时后台node.js(express)不能使用res.redirect重定向?

发布于 2022-09-04 05:24:06 字数 971 浏览 15 评论 0

首先这个问题我已经解决了。
我利用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表头重复的现象。

请问大神们还有什么办法解决?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

满天都是小星星 2022-09-11 05:24:06

其实我自己想了一下是想明白了。我的需求也必须用到AJAX。如果不用AJAX难道要用url带参数的冒着被注入攻击的风险传密码值吗?

我来好好的解释下,首先用了AJAX的确就无法重定向,这个问题是没有办法的,因为AJAX使用之后他是完整的一个请求和回调的过程,在这个过程里面只存在一个HTTP表头,如果你重定向就会重复,就会报错。

使用AJAX就是在同一个界面的东西,不能重定向到其他界面就打破AJAX的整个请求过程, 因为redirect这个函数改变的是AJAX请求中间的定向,这就打破了AJAX整个流程。

所以如果你想做一个登陆界面,那么只有AJAX返回打开下一步的url,然后前端进行调转吧。
或者不用AJAX。

远山浅 2022-09-11 05:24:06

就按你说的在前端跳转就好了,ajax本来就是用来获取数据的,

妳是的陽光 2022-09-11 05:24:06

首先你要了解什么是ajax,ajax就是为了页面局部刷新而不需要重新刷新整个页面设计的,你的需求更本就不需要用ajax技术。

不气馁 2022-09-11 05:24:06

ajax本来就是用来获取数据

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文