【问题标题】:Basic Authentication for HTTP request in AWS Lambda node.jsAWS Lambda node.js 中 HTTP 请求的基本身份验证
【发布时间】:2020-09-04 18:43:48
【问题描述】:

我在使用 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();
    });
}

【问题讨论】:

    标签: javascript node.js amazon-web-services aws-lambda basic-authentication


    【解决方案1】:

    您需要包含 Authorization 标头: 您可以通过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();
        });
    }
    

    【讨论】:

    • They say 在 Node > 4 上你可以使用 Buffer.from 而不是 new Buffer
    猜你喜欢
    • 2011-11-12
    • 2017-07-23
    • 2011-08-22
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多