【发布时间】:2019-09-16 07:52:04
【问题描述】:
我正在尝试使用 request 对 Fortigate 设备进行 API 调用。登录方法是使用凭据对 /logincheck 进行 POST,然后使用响应 cookie 进行后续 API 调用。
那部分工作正常,我确实得到了 cookie。但是,当我进行第二次调用时,我看不到 Cookie 标头,并且 cookieJar 看起来是空的。
代码如下:
const config = require('./config/config');
const request = require('request');
var url = `${config.fortigate.adminURL}/logincheck`;
var cookieJar = request.jar();
request.post(
{
url : url,
headers : {
"Accept": "application/json"
},
form: {
username: config.fortigate.user,
secretkey: config.fortigate.password
},
jar: cookieJar
},
function (error, response, body) {
url = `${config.fortigate.adminURL}/api/v2/monitor/router/ipv4/`;
request({
url : url,
headers : {
"Accept": "application/json"
},
jar: cookieJar
},
function (error, response, body) {
console.log(response.request.headers);
console.log(response.statusCode);
console.log(cookieJar);
});
}
);
console.log 命令的输出如下:
Headers: { Accept: 'application/json' }
Status code: 401
RequestJar {
_jar:
CookieJar {
enableLooseMode: true,
store: { idx: { '192.168.1.99': { '/': {} } } } } }
我已经阅读了此处https://github.com/request/request 的手册,但仍然无法使用。
还找到了另一个确实有解决方案的帖子,但其他人也有问题: How to maintain a request session in NodeJS
当然我错过了什么,但是什么?有什么想法吗?
更新
cookies 在 1969 年过期。也许 cookie jar 在请求之间没有持久保存在内存 cookie 中?
Cookie="APSCOOKIE_2739400828="0%260"; Expires=Fri, 09 May 1969 12:47:54 GMT; Path=/; Secure; SameSite=Strict; hostOnly=true; aAge=6ms; cAge=6ms"
【问题讨论】:
-
您能否检查一下您是否从第一个 API 调用中获得了响应 cookie?
-
是的,第一次通话后我确实收到了。
标签: node.js session cookies node-request