如何通过节点服务器识别请求?

时间:2014-05-15 14:05:07

标签: node.js express restify mean-stack

我对使用节点服务器有一种奇怪的感觉..

首先,我创建了一个快速的http节点服务器,我将其称为server1,将页面呈现给用户......我创建了另一个快速的http节点服务器,我的术语是server2,它将公开服务(业务逻辑)实际上是由server1调用的。

当用户在浏览器中与server1交互时...每个用户请求对于具有唯一会话ID的server1是唯一的。

但奇怪的是,当我使用请求npm模块从server1请求server2并进行REST调用以调用server2中的服务时......     这里server2将来自server1的请求视为一个常见的....我的意思是甚至多个用户请求服务器1进行请求服务器2 ... server2将所有请求视为单个会话...     Server2不区分来自不同用户的请求......

Code in Server2: 
   app.get('/service2' , function(req , res) {
       if(req.session.userID==null){
          req.session.userID == 1;
          console.log("Session is just created for the user");
       }else{
          console.log("session userid" + req.session.userID);
       }

   });

Here the very first request to the server2 from server1 will be a null session ... after that every user can print the console statement in the else block.

Code in Server1 : 

  app.get('/getuserreq' , function(req , res) {
       if(req.session.userID==null){
          req.session.userID == 1;
          console.log("Session is just created for the user");
       }else{
          console.log("session userid" + req.session.userID);
       }

   });

但是,server1中的相同代码为每个&的第一个请求打印“刚刚创建的会话”消息。来自浏览器窗口的每个用户。

如果我们从server1接到对server2的调用,请告诉我如何处理请求识别...以识别最终用户会话的方式??????


添加以下附加信息:

server1中的中间件是cookieParser,session(使用sessionStore),json,methodOverride,router)..同样在server2中也是....

使用请求模块

调用Server2
Request.post({
    uri:endpoint,
    method: 'POST',
    json:true,
    proxy: '', 
    headers: {'Content-Type':'application/x-www-form-urlencoded'},
    body: req.body
},function(err,extResponse,extResponseBody)
{
    var data = {};
    if(err)
    {
        log.error('Error in App layer : ',err);
        data.status = 2;
    }
    else
    {

        data.status = 1;
        data.emailid = extResponseBody.emailid;
        data.balance_records = extResponseBody.available_balance_records;
        data.cmrecords = extResponseBody.records;
        res.jsonp(data);
    }
});

访问链接 - https://github.com/mikeal/request

1 个答案:

答案 0 :(得分:0)

默认情况下请求不记得cookie。您必须按照此处的定义设置jar选项:https://github.com/mikeal/request#examples

因此,您应该将代码更改为以下内容:

Request.post({
    uri:endpoint,
    method: 'POST',
    json:true,
    proxy: '', 
    headers: {'Content-Type':'application/x-www-form-urlencoded'},
    body: req.body,
    jar: true
}, ...