【问题标题】:nodejs copy cookies for internal app requestnodejs为内部应用程序请求复制cookie
【发布时间】:2013-02-10 02:52:12
【问题描述】:

我正在使用 Express 3.x 和 connect-mongo 以及请求模块

我的应用程序有一些确保外部请求具有 access_token 的中间件。 检查 access_token 并在会话中存储一些数据。 然后,我想对应用程序中的 url 进行内部调用,但内部调用会发出一个新会话(作为来自用户浏览器请求的单独请求)。 我想要做的是以某种方式将 Express 签名的 cookie 复制到内部 request() 中,以便中间件根据原始外部会话 ID 执行操作。 我尝试将 cookie jar 传递到请求对象中,但它似乎不太支持签名的 cookie。有什么想法可以做到这一点吗?

/* Middleware to check access tokens */
app.all("/*", requireAuth, function(req, res, next) {
  next(); 
});

function requireAuth(req,res,next) {

if ( req.query.access_token && !req.session ) {

   // Check the access token and popualte stuff in the session
   req.session.somedata = 'test';

   // Then call a url internall to do something

   // My issue is that this INTERNAL request below gets a new session Id
   // so it itself returns Not Authorised as its hits the same code

   request({
       url: 'someurlinside-this-node-app',
       method: "GET"
   }, function _callback(err, serviceres, body) {
       next();
   });

 }else{
     res.send('Not Authorised');
 }

}

【问题讨论】:

    标签: node.js session express


    【解决方案1】:

    Cookies 只是另一个标头,所以如果你想传递它,你应该可以这样做:

    var cookies = req.header('Set-Cookie');
    
    request({
           url: 'someurlinside-this-node-app',
           method: "GET",
           headers: { 'Set-Cookie' : cookies}
       }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-19
      • 2014-12-27
      • 1970-01-01
      • 2018-01-16
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      相关资源
      最近更新 更多