Cómo usar http.client en Node.js si hay una autorización básica

Según el título, ¿cómo hago eso? Aquí está mi código:

var http = require('http'); var client = http.createClient(80, 'www.example.com'); // to access this url i need to put basic auth. var request = client.request('GET', '/', {'host': 'www.example.com'}); request.end(); request.on('response', function (response) { console.log('STATUS: ' + response.statusCode); console.log('HEADERS: ' + JSON.stringify(response.headers)); response.setEncoding('utf8'); response.on('data', function (chunk) { console.log('BODY: ' + chunk); }); }); 

Tienes que configurar el campo de Authorization en el encabezado.

Contiene el tipo de autenticación Basic en este caso y la combinación de username:password que se codifica en Base64:

 var username = 'Test'; var password = '123'; var auth = 'Basic ' + Buffer.from(username + ':' + password).toString('base64'); // new Buffer() is deprecated from v6 // auth is: 'Basic VGVzdDoxMjM=' var header = {'Host': 'www.example.com', 'Authorization': auth}; var request = client.request('GET', '/', header); 

Desde Node.js http.request API Docs podría usar algo similar a

 var http = require('http'); var request = http.request({'hostname': 'www.example.com', 'auth': 'user:password' }, function (response) { console.log('STATUS: ' + response.statusCode); console.log('HEADERS: ' + JSON.stringify(response.headers)); response.setEncoding('utf8'); response.on('data', function (chunk) { console.log('BODY: ' + chunk); }); }); request.end(); 

Una solución más sencilla es utilizar el formato de usuario: pass @ host directamente en la URL.

Usando la biblioteca de solicitud :

 var request = require('request'), username = "john", password = "1234", url = "http://" + username + ":" + password + "@www.example.com"; request( { url : url }, function (error, response, body) { // Do more stuff with 'body' here } ); 

También he escrito un pequeño blog acerca de esto.

 var username = "Ali"; var password = "123"; var auth = "Basic " + new Buffer(username + ":" + password).toString("base64"); var request = require('request'); var url = "http://localhost:5647/contact/session/"; request.get( { url : url, headers : { "Authorization" : auth } }, function(error, response, body) { console.log('body : ', body); } ); 

para lo que vale, estoy usando node.js 0.6.7 en OSX y no pude obtener ‘Autorización’: auth para que funcione con nuestro proxy, tenía que configurarse en ‘Autorización Proxy’: auth mi código de prueba es :

 var http = require("http"); var auth = 'Basic ' + new Buffer("username:password").toString('base64'); var options = { host: 'proxyserver', port: 80, method:"GET", path: 'http://www.google.com', headers:{ "Proxy-Authorization": auth, Host: "www.google.com" } }; http.get(options, function(res) { console.log(res); res.pipe(process.stdout); }); 
 var http = require("http"); var url = "http://api.example.com/api/v1/?param1=1&param2=2"; var options = { host: "http://api.example.com", port: 80, method: "GET", path: url,//I don't know for some reason i have to use full url as a path auth: username + ':' + password }; http.get(options, function(rs) { var result = ""; rs.on('data', function(data) { result += data; }); rs.on('end', function() { console.log(result); }); }); 

Me encontré con esto recientemente. Lo que se establece entre los encabezados de Autorización y Autorización Proxy depende del servidor con el que el cliente está hablando. Si es un servidor web, debe establecer la autorización y si es un proxy, debe establecer el encabezado de autorización de proxy

Este código funciona en mi caso, después de mucha investigación. Necesitará instalar el paquete de solicitud npm .

 var url = "http://api.example.com/api/v1/?param1=1&param2=2"; var auth = "Basic " + new Buffer(username + ":" + password).toString("base64"); exports.checkApi = function (req, res) { // do the GET request request.get({ url: url, headers: { "Authorization": auth } }, function (error, response, body) { if(error) { console.error("Error while communication with api and ERROR is : " + error); res.send(error); } console.log('body : ', body); res.send(body); }); } 
    Intereting Posts