2016-07-20 14 views
0

message変数のJSONコンテンツをNode.jsサーバーからAngularJSクライアントに送信するために、以下のコードを変更する必要がありますか?Node.js res.redirect()にJSONを含む

次のコードは、Node.jsアプリケーションのルーティングファイルにあります。以下のコードはJSONを生成し、ファイルをAngularJSクライアントに送るredirectURL='/'ハンドラに制御をリダイレクトします。

このトランザクションでは、JSON messageをAngularJSクライアントに送信することが重要です。そのため、AngularJSブラウザアプリはユーザーの一意のIDを保持する必要があります。こうすることで、AngularJSブラウザアプリケーションからの後続のリクエストは、このNode.jsアプリケーションの何百ものクローンのいずれかによって処理され、各クローンは、リクエストごとに受信したJSONを使用してRedisクラスタに接続し、リクエスト。これにより、Node.jsがユーザーIDを覚えておく必要がなくなります。

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を持っていないされていないユーザからの要求にサービスを提供することができるようにすることに注意してください。あなたが何をしようとしていることは、リダイレクトからロードされるページに情報を渡すことであれば、それを行うための通常の方法は、リダイレクトURLのクエリパラメータなどの情報を符号化することである

+0

あなたの質問を正しく理解していれば、フロントエンドがメッセージ変数の内容を受信して​​いないと言っていますか? – gca

+0

'res.redirect(redirectURL)'を 'res.json(message)'に変更しますか? – jfriend00

+0

@AnveshCheckaはい、正しく理解しています。 Angularアプリはindex.htmlを受け取るだけです。 – FirstOfMany

答えて

1

これは、新たに読み込まれたページにリダイレクトされ、そのページはクエリパラメータを解析して情報を取得できます。

リダイレクト前に情報をクッキーに入れて、リダイレクトされたページがクッキーから情報を取得することもできますが、リダイレクト処理中に異なるドメインを使用していると、Cookieが複雑または非実用的になります特定のドメインに関連付けられている)。

リダイレクトがリダイレクトされたページへ上のJSONを渡すことはありませんので、あなただけのリダイレクト応答でJSONを返すことはできません - それは仕事をリダイレクトする方法はありません。リダイレクトは、新しいURLに対応するページをロードするだけです。

+0

ありがとう、これで私に話す時間をとってくれて+1。 – FirstOfMany

+0

@FirstOfMany - FYI、今後の予定です。どのような情報がどのページからどのページに到達しようとしていたかを示すフロー図が、はっきりと明らかになっていたでしょう。一時間前になって、あなたがやろうとしていたことをついに理解しました。とにかく、あなたはそれを今すぐ選別してうれしいです。 – jfriend00

関連する問題