簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM