繁体   English   中英

AWS Lambda node.js 中 HTTP 请求的基本身份验证

[英]Basic Authentication for HTTP request in AWS Lambda node.js

我在我的 AWS Lambda function 中有一个 http 请求,使用 Z28A3689BE95C88DD548E7A37DB516AB0。 该代码工作正常,但是,我想访问需要用户名/密码身份验证的 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();
    });
}

您需要包含授权 header:您可以通过 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();
    });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM