我正在尝试获取会话令牌以访问VCenter。
我试图通过邮递员获得它,该邮递员对基本身份验证没有任何问题。当我尝试在NodeJS中执行相同操作时,我得到的数据为空。
这是我的代码
async function getListPolicy(url, username, password) {
var auth = "Basic " + new Buffer.from(username + ":" + password).toString("base64");
var header = {
Authorization: auth,
'Content-Type': 'application/json'
}
var options = {
method: 'POST',
url: url + '/rest/com/vmware/cis/session',
headers: header,
};
return new Promise(function (resolve, reject) {
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
resolve(body);
});
});
}
在PostMan中,我仅将authorization
与Basic Auth
一起使用。它返回带有键的值,这就是我想要得到的。
非常感谢您。
编辑: 该文件在这里被调用。
const express = require("express");
const router = express.Router();
const getPolicies = require('./getPolicies.js');
router.post("/getListPolicy", getListPolicy);
module.exports = router;
async function getListPolicy(req, res, next) {
var url = "https://xxx/";
var username = "administrator@vsphere.local";
var password = "xxx";
var token = await getPolicies.getListPolicy(url, username, password);
res.json(token);
}
答案 0 :(得分:1)
根据request
API,可以为Basic
身份验证提供选项中的auth
键。另外,您也可以在网址中指定。
来自npm doc
:
request.get('http://some.server.com/', {
'auth': {
'user': 'username',
'pass': 'password',
'sendImmediately': false
}
});
OR
var username = 'username',
password = 'password',
url = 'http://' + username + ':' + password + '@some.server.com';
request({url: url}, function (error, response, body) {
// Do more stuff with 'body' here
});