[英]Including JSON in Node.js res.redirect()
為了使message
變量的JSON內容可以從Node.js服務器發送到AngularJS客戶端,需要對以下代碼進行哪些特定更改?
以下代碼位於Node.js應用程序的路由文件中。 下面的代碼生成JSON,然后將控制重定向到redirectURL='/'
處理程序,該處理程序將./public/index.html
文件發送到AngularJS客戶端。
在此事務中將JSON message
發送到AngularJS客戶端很重要,以便AngularJS瀏覽器應用程序可以負責保留用戶的唯一身份。 這樣,此Node.js應用程序的數百個克隆都可以滿足來自AngularJS瀏覽器應用程序的后續請求,並且每個克隆都將使用其隨每個請求接收的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)
重定向的用戶的請求app.get('/some_endpoint', function(req, res)
以及誰因此,服務器上沒有任何要發送到瀏覽器應用程序的message
JSON。
如果您要執行的操作是將信息傳遞到將從重定向加載的頁面,那么通常的方法是將信息編碼為重定向URL上的查詢參數。
這將通過重定向傳遞到新加載的頁面,然后該頁面可以解析查詢參數以獲取信息。
也可以在重定向之前將信息放入cookie中,並使重定向的頁面從cookie中獲取信息,但是,如果您在重定向過程中使用了不同的域,則cookie可能很復雜或不切實際(因為cookie與特定域)。
您不能只返回帶有重定向響應的JSON,因為重定向不會將JSON傳遞給重定向的頁面-重定向的工作方式不是這樣。 重定向僅加載與新URL對應的頁面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.