app.get('/logout', function (req, res){
req.url='/';
console.log('req.url is ' + req.url);
req.session.state = null;
res.redirect('/login');
});
在重定向时,'url'保持不变。我希望它也能改变它。我尝试使用req.url。但它没有反映在url-bar上。你怎么改变它?
注意: - 我正在使用Angularjs路由,因此res.redirect
不会自动更新网址。
编辑: - 角度代码: -
$http({method: 'GET', url: '/logout'}).
success(function(data, status, headers, config) {
console.log('happened');
}).
error(function(data, status, headers, config) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
答案 0 :(得分:6)
默认情况下,res.redirect
会发送一个带有302状态代码的响应和一个带有您调用该函数的URL的Location标头。所以在你的情况下,如:
HTTP/1.1 302
Location: http://example.com/login/
您需要在AngularJS端处理此问题以更改URL。
答案 1 :(得分:0)
我尝试了上述解决方案,但没有运气。我收到错误消息:header ‘authorization’ is not allowed according to header
我搜寻了一天,并尝试了网络上提供的所有解决方案,以多种方式设置了res.header( "Access-Control-Allow-Headers", "Origin, Authorization, Accept, Content-Type")
,研究了许多文章,并对后端进行了许多更改,但似乎Firefox无法找到{{ 1}},它一直在寻找。
但是上面的答案给了我一个更简单的方法来做Authorization
的想法!我只是将网址发送到请求响应中的前端,如下所示:
redirect
然后在前端(reactJS)中,我确实要替换窗口位置:
res.status(201).json({
message: "Order registered",
redirectUrl: "http://localhost:3000/payment-check?query"
})
它以最佳方式重定向,没有任何问题。