简体   繁体   中英

Send a set-cookie header to a redirect url in node.js

I am using node.js request module to fetch an id_token from an API. After fetching that id_token I want to send a redirect uri response with a set-cookie header to the redirected url . But I can't quite figure out how to do it.

Here is my code:

app.use("/nodejs-server/retrieveCode", function(req, res) {

        var clientID = 'some random string'
        var client_Secret = 'another random string'
        var code_token = clientID + ":" + client_Secret
        var buffer = new Buffer(code_token)
        var token = buffer.toString('base64')
        var rtoken = "Basic " + token;
        var headers = {
            'Content-Type': 'application/json',
            'Authorization': rtoken
        }
        var postData = {grant_type: 'authorization_code', code: req.query.code, redirect_uri: 'http://localhost:3000/nodejs-server/retrieveCode'} //Query string data
        var options  = {
            method: 'POST', //Specify the method
            body: postData,
            url: 'http://localhost:4000/server/token',
            json: true,
            headers: headers
        }
        request(options
        , function(error, response, body){
            if(error) {
                console.log(error);
            } else {
                //send a redirect uri and set-cookie header response

            }
        });

I tried using

res.redirect(302, "http://localhost:9000");

and it is able to redirect but I am not able to send the cookie with it as well

Any help is appreciated.

After lots of trials and errors and googling I was finally able to achieve my goal. In order to send a cookie with an expiry to the the redirect URL, I just added

s = body.exp.toUTCString();
res.cookie('id_token' ,body.id_token, {expires: s});
res.redirect(302, 'http://localhost:8080');

in express 4.16.3 , you must set

res.cookie()

before

res.redirect()

and it works for me, without error

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM