我对使用节点服务器有一种奇怪的感觉..
首先,我创建了一个快速的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的调用,请告诉我如何处理请求识别...以识别最终用户会话的方式??????
使用请求模块
调用Server2Request.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);
}
});
答案 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
}, ...