这是从客户端设置服务器端cookie的好/安全方式吗?

时间:2016-07-06 10:02:35

标签: javascript node.js express cookies reactjs

我正在使用一个名为reactjs的应用程序应用程序框架,我遇到的问题是设置httpOnly cookie,因为它们无法从客户端设置/读取我需要弄清楚如何使用为此表达。

我提出的一个想法是向/cookie:data之类的路线发出一个帖子请求,其中数据是需要存储在cookie中的令牌值,所以:

app.post('/cookie:data', function(req, res) {
  // Set cookie here
  res.send(200)
})

问题我犹豫是该令牌包含用于保护api的唯一用户标识符,我不确定我是否通过这种方式设置cookie来暴露这一点。

或者不使用:data而是找出如何从post请求中获取数据(json对象)将是有益的

修改 我能想到的一个问题是,任何人都可以发布到这条路线并设置不同的cookie吗?什么是保护它的方法?

编辑2: 这是我用来代理api调用的快速设置(仅用于澄清注释)

  app.use('/api', function (req, res) {
    let url = config.API_HOST + req.url
    req.pipe(request(url)).pipe(res)
  })

1 个答案:

答案 0 :(得分:1)

假设您要将以/api开头的所有请求代理到第三方(/api/users除外),您希望“手动”执行,因为它会返回您需要的令牌:

app.post('/api/users', function(req, res) {
  let url        = config.API_HOST + req.url;
  let apiRequest = request.post(url, function(err, response, body) {
    // Responses are just examples, you should tailor them to your situation
    if (err) {
      return res.sendStatus(500);
    } else if (response.statusCode !== 200) {
      return res.sendStatus(response.statusCode);
    } else {
      res.cookie('token', body).send('OK');
    }
  });
  req.pipe(apiRequest);
})

app.use('/api', function (req, res) {
  let url = config.API_HOST + req.url
  req.pipe(request(url)).pipe(res)
})