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.
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');
dans express 4.16.3, vous devez définir
res.cookie ()
avant
res.redirect ()
et ça marche pour moi, sans erreur