需要对下面的代码进行哪些具体更改,以便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的用户的请求服务器将被发送到浏览器应用程序。
答案 0 :(得分:4)
如果您要做的是将信息传递到将从重定向加载的页面,那么通常的方法是将信息编码为重定向URL上的查询参数。
这将通过重定向传递到新加载的页面,然后该页面可以解析查询参数以获取信息。
也可以在重定向之前将信息放入cookie中,并让重定向的页面从cookie中获取信息,但如果您在重定向过程中使用不同的域,则cookie可能很复杂或不切实际(因为cookie是与特定域相关联。)
您不能仅使用重定向响应返回JSON,因为重定向不会将JSON传递到重定向页面 - 这不是重定向的工作方式。重定向只会加载与新URL对应的页面。