将set-cookie标头发送到node.js中的重定向网址

时间:2016-06-10 09:26:10

标签: javascript node.js express redirect cookies

我正在使用node.js request模块从API获取id_token。获取该id_token后,我想发送一个redirect uri响应set-cookie header to the redirected url。但我无法弄明白该怎么做。

这是我的代码:

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

            }
        });

我尝试使用

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

并且它能够重定向但我也无法使用它发送cookie

感谢任何帮助。

2 个答案:

答案 0 :(得分:17)

经过大量的试验,错误和谷歌搜索,我终于能够实现我的目标。为了将带有过期时间的cookie发送到重定向URL,我刚刚添加了

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

答案 1 :(得分:0)

在Express 4.16.3中,您必须设置

  

res.cookie()

之前

  

res.redirect()

它对我有用,没有错误