在Node.js res.redirect()中包含JSON

时间:2016-07-20 23:04:06

标签: javascript json node.js express

需要对下面的代码进行哪些具体更改,以便message变量的JSON内容可以从Node.js服务器发送到AngularJS客户端?

以下代码位于Node.js应用程序的路由文件中。下面的代码生成JSON,然后将控制重定向到redirectURL='/'处理程序,该处理程序将./public/index.html文件发送到AngularJS客户端。

在此事务中将JSON message发送到AngularJS客户端非常重要,这样AngularJS浏览器应用程序可以负责保留用户的唯一标识。这样,来自AngularJS浏览器应用程序的后续请求可以由此Node.js应用程序的数百个克隆中的任何一个提供,并且每个克隆将使用它随每个请求接收的JSON与Redis集群连接以管理多个用户身份。要求。这将使Node.js不必记住用户身份。

app.get('/some_endpoint', function(req, res) {
    var redirectURL = '/';
    request.post(otherServerUrl, function(err, response, body){
        if(err){console.log('ERROR with token request.')}
        var data = JSON.parse(body);
        getUser(data.access_token).then(function(message) {
            console.log('in callback, jwtJSON is: ');console.log(message);
            res.redirect(redirectURL);
        });
    });
});

app.get('*', function(req, res) {
    res.sendfile('./public/index.html'); // load the single view file (angular will handle the front-end)
});

请注意,app.get('*', function(req, res)还需要能够提供尚未从app.get('/some_endpoint', function(req, res)重定向且因此没有message JSON的用户的请求服务器将被发送到浏览器应用程序。

1 个答案:

答案 0 :(得分:4)

如果您要做的是将信息传递到将从重定向加载的页面,那么通常的方法是将信息编码为重定向URL上的查询参数。

这将通过重定向传递到新加载的页面,然后该页面可以解析查询参数以获取信息。

也可以在重定向之前将信息放入cookie中,并让重定向的页面从cookie中获取信息,但如果您在重定向过程中使用不同的域,则cookie可能很复杂或不切实际(因为cookie是与特定域相关联。)

您不能仅使用重定向响应返回JSON,因为重定向不会将JSON传递到重定向页面 - 这不是重定向的工作方式。重定向只会加载与新URL对应的页面。