4
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不会自动更新 url。

编辑:- 角度代码:-

$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.
        });
4

2 回答 2

7

默认情况下res.redirect,将发送带有 302 状态代码的响应和带有您调用函数的 URL 的 Location 标头。所以在你的情况下是这样的:

HTTP/1.1 302 
Location: http://example.com/login/

您需要在 AngularJS 端处理此问题以更改 URL。

于 2013-10-28T09:10:23.280 回答
0

我尝试了上面的解决方案,但没有运气。我收到了错误:header ‘authorization’ is not allowed according to header

我搜索了一天并尝试了网络上提供的所有解决方案来解决这个问题,我设置res.header( "Access-Control-Allow-Headers", "Origin, Authorization, Accept, Content-Type")了几种方式,研究了很多文章并在我的后端进行了很多更改,但似乎firefox找不到Authorization它正在寻找的东西。

但上面的答案给了我一个以redirect更简单的方式做的想法!我只是在请求响应中将我的 url 发送到前端,如下所示:

 res.status(201).json({
   message: "Order registered",
   redirectUrl: "http://localhost:3000/payment-check?query"
  })

然后在前端(reactJS)中,我确实替换了窗口位置:

window.location = res.data.redirectUrl

它以最好的方式毫无问题地重定向。

于 2020-11-05T20:20:43.707 回答