带有 cookie 的节点请求内部请求
Node Request inside request with cookie
我在我的配置节点中使用节点请求 var request = require(“request”);
来执行 POST 请求,并作为响应获得一个 Cookie,需要在所有其余请求中引用它。
我尝试启用 COOKIE JAR,如果我在第一个请求下链接我的请求,它工作正常,但我想从自定义节点调用其余请求,如 GetList。
我尝试添加 var j = request.jar(new FileCookieStore(‘cookies.json’))
时 toughcookie(文件 cookie)不起作用;
节点停止工作,没有错误。
下面是我的配置节点,用于获取 Cookie 的代码。
function myAuthNode(n) {
RED.nodes.createNode(this,n);
this.username=n.username;
this.password=n.password;
this.connect=function(){
//TODO-NG need to make URL configurable
request.post({url: "http://localhost:8080/api/method/login", qs: {usr: this.username, pwd: this.password}}, function(err, res, body) {
if(err) {
return console.error(err);
}
console.log("HERE IF I PUT REQUEST Works fine");
console.log("CAN WE PASS ANOTHER REQUEST here from calling SOURCE to execute here?");
});
};
}
在我调用的这个自定义节点中
// The main node definition - most things happen in here
function GetListNode(n) {
// Create a RED node
RED.nodes.createNode(this,n);
console.log('I am called');
//using auth config now you are connected, tell me what is needed?
this.authConfig=RED.nodes.getNode(n.auth);
//connect to config and do auth
this.authConfig.connect();
//THIS ALWAYS FAILS due to cookie not found where as I enable request JAR
request.get({url: "http://localhost:8080/api/resource/Project"}, function(err, res, body) {
if(err) {
return console.error(err);
}
console.log("Response body:", body);
});
}
请建议如何处理请求中的cookie,以便所有经过auth 的请求都能正常工作?
我们能否将请求定义传递给另一个请求在其中执行,或者如何处理 Cookie?
我通过在 GetListNode() 中执行以下操作解决了这个问题,我在调用中转移了第二个请求:
this.authConfig.connect(function(){request.get({url: "http://localhost:8080/api/resource/Project"}, function(err, res, body) {
if(err) {
return console.error(err);
}
console.log("Response body:", body);
});});
我在下面做的配置节点中,添加了一个函数参数并调用了传递的函数,工作得很好:):
this.connect=function(f){
//TODO-NG need to make URL configurable
request.post({url: "http://localhost:8080/api/method/login", qs: {usr: this.username, pwd: this.password}}, function(err, res, body) {
if(err) {
return console.error(err);
}
f.call();
});
};
我在我的配置节点中使用节点请求 var request = require(“request”);
来执行 POST 请求,并作为响应获得一个 Cookie,需要在所有其余请求中引用它。
我尝试启用 COOKIE JAR,如果我在第一个请求下链接我的请求,它工作正常,但我想从自定义节点调用其余请求,如 GetList。
我尝试添加 var j = request.jar(new FileCookieStore(‘cookies.json’))
时 toughcookie(文件 cookie)不起作用;
节点停止工作,没有错误。
下面是我的配置节点,用于获取 Cookie 的代码。
function myAuthNode(n) {
RED.nodes.createNode(this,n);
this.username=n.username;
this.password=n.password;
this.connect=function(){
//TODO-NG need to make URL configurable
request.post({url: "http://localhost:8080/api/method/login", qs: {usr: this.username, pwd: this.password}}, function(err, res, body) {
if(err) {
return console.error(err);
}
console.log("HERE IF I PUT REQUEST Works fine");
console.log("CAN WE PASS ANOTHER REQUEST here from calling SOURCE to execute here?");
});
};
}
在我调用的这个自定义节点中
// The main node definition - most things happen in here
function GetListNode(n) {
// Create a RED node
RED.nodes.createNode(this,n);
console.log('I am called');
//using auth config now you are connected, tell me what is needed?
this.authConfig=RED.nodes.getNode(n.auth);
//connect to config and do auth
this.authConfig.connect();
//THIS ALWAYS FAILS due to cookie not found where as I enable request JAR
request.get({url: "http://localhost:8080/api/resource/Project"}, function(err, res, body) {
if(err) {
return console.error(err);
}
console.log("Response body:", body);
});
}
请建议如何处理请求中的cookie,以便所有经过auth 的请求都能正常工作?
我们能否将请求定义传递给另一个请求在其中执行,或者如何处理 Cookie?
我通过在 GetListNode() 中执行以下操作解决了这个问题,我在调用中转移了第二个请求:
this.authConfig.connect(function(){request.get({url: "http://localhost:8080/api/resource/Project"}, function(err, res, body) {
if(err) {
return console.error(err);
}
console.log("Response body:", body);
});});
我在下面做的配置节点中,添加了一个函数参数并调用了传递的函数,工作得很好:):
this.connect=function(f){
//TODO-NG need to make URL configurable
request.post({url: "http://localhost:8080/api/method/login", qs: {usr: this.username, pwd: this.password}}, function(err, res, body) {
if(err) {
return console.error(err);
}
f.call();
});
};