web-dev-qa-db-fra.com

Envoyer un en-tête set-cookie à une URL de redirection dans node.js

J'utilise le module node.js request pour récupérer un id_token à partir d'une API. Après avoir récupéré cet id_token, je veux envoyer un redirect uri réponse avec un set-cookie header to the redirected url. Mais je n'arrive pas à comprendre comment le faire.

Voici mon 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

            }
        });

J'ai essayé d'utiliser

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

et il est capable de rediriger mais je ne peux pas envoyer le cookie avec lui aussi

Toute aide est appréciée.

16
Shubham Khatri

Après beaucoup d'essais et d'erreurs et de recherche sur Google, j'ai finalement pu atteindre mon objectif. Afin d'envoyer un cookie avec une expiration à l'URL de redirection, je viens d'ajouter

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

dans express 4.16.3, vous devez définir

res.cookie ()

avant

res.redirect ()

et ça marche pour moi, sans erreur

0
Rizky Susanto