如何在api请求成功后在express中设置cookie

时间:2016-07-05 18:15:55

标签: javascript node.js express cookies

因此,在我的整个应用程序中,我使用/api路由来掩盖我真正的api url,并且我在这样的表达中代理它:

  // Proxy api calls
  app.use('/api', function (req, res) {
    let url = config.API_HOST + req.url // This gets my api url from config
    req.pipe(request(url)).pipe(res) // This pipes it through
  })

但是我现在需要检查用户何时发布到/api/authenticate并获得成功的响应我需要在快递中设置带有令牌的httpOnly cookie。怎么能实现这一目标?我还需要访问该响应返回的数据来获取令牌。

1 个答案:

答案 0 :(得分:1)

我不知道我是否完全低估了你(并且我没有评论的声誉),但我认为你可以使用request module。例如:

var request = require('request')
//declare this inside your route if you want to send some parameters you can use formData it accepts get or post requests
request.post(config.API_HOST + req.url, formData : { field : 'something' }, function(err, response, body) {
    //here you have the response from the route with the token you generated
    //and then you can pipe this to the proxy or send the token via res
    res.send({ token : response.token }) //or use res.cookie('token', response.token)
}

有了这个,您可以创建一个请求,并在将数据发送到第一个响应之前将所有内容返回给您,不要忘记处理错误的参数!