javascript - AWS Lambda node.js 中 HTTP 请求的基本身份验证
问题描述
我使用 node.js 在我的 AWS Lambda 函数中有一个 http 请求。该代码工作正常,但是,我想访问需要用户名/密码身份验证的 URL。如何在我的代码中实现它?
function httprequest() {
return new Promise((resolve, reject) => {
const options = {
host: 'api.plos.org',
path: '/search?q=title:DNA',
port: 443,
method: 'GET'
};
const req = http.request(options, (res) => {
if (res.statusCode < 200 || res.statusCode >= 300) {
return reject(new Error('statusCode=' + res.statusCode));
}
var body = [];
res.on('data', function(chunk) {
body.push(chunk);
});
res.on('end', function() {
try {
body = JSON.parse(Buffer.concat(body).toString());
} catch(e) {
reject(e);
}
resolve(body);
});
});
req.on('error', (e) => {
reject(e.message);
});
req.end();
});
}
解决方案
您需要包含一个授权标头:您可以通过 base64 编码“用户名:密码”来制作一个
function httprequest() {
return new Promise((resolve, reject) => {
const username = "john";
const password = "1234";
const auth = "Basic " + new Buffer(username + ":" + password).toString("base64");
const options = {
host: 'api.plos.org',
path: '/search?q=title:DNA',
port: 443,
headers: { Authorization: auth},
method: 'GET'
};
const req = http.request(options, (res) => {
if (res.statusCode < 200 || res.statusCode >= 300) {
return reject(new Error('statusCode=' + res.statusCode));
}
var body = [];
res.on('data', function(chunk) {
body.push(chunk);
});
res.on('end', function() {
try {
body = JSON.parse(Buffer.concat(body).toString());
} catch(e) {
reject(e);
}
resolve(body);
});
});
req.on('error', (e) => {
reject(e.message);
});
req.end();
});
}
推荐阅读
- typescript - 返回 AsyncFunction 的 Typescript 函数的适当返回类型是什么?
- weblogic12c - Weblogic 12c 集群
- bash - 使用循环将存储在数组中的字符串放在特定文件的特定行中
- html - 使用 xslt 语言关闭“if”条件内的 html 标记
- python - 值错误:输入数组应具有与目标数组相同数量的样本。找到 166 个输入样本和 4 个目标样本
- matlab - 如何在 matlab 中绘制专业质量的图表?
- python - 导入模块时,我收到有关未定义某些变量的 NameError(即使已定义)
- latex - MathJax 的 Bordermatrix 替代方案
- javafx - 没有css的JavaFX TreeTableView动态样式
- android - 任务 whenAllSuccess 返回 Uri 而不是 List