Comment utiliser http.client dans Node.js s’il existe une autorisation de base

Selon le titre, comment puis-je faire cela? Voici mon code:

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.ssortingngify(response.headers)); response.setEncoding('utf8'); response.on('data', function (chunk) { console.log('BODY: ' + chunk); }); }); 

Vous devez définir le champ d’ Authorization dans l’en-tête.

Il contient le type d’authentification Basic dans ce cas et la combinaison username:password qui est encodée dans Base64:

 var username = 'Test'; var password = '123'; var auth = 'Basic ' + Buffer.from(username + ':' + password).toSsortingng('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); 

De Nodes.js http.request API Docs, vous pouvez utiliser quelque chose de similaire à

 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.ssortingngify(response.headers)); response.setEncoding('utf8'); response.on('data', function (chunk) { console.log('BODY: ' + chunk); }); }); request.end(); 

Une solution plus simple consiste à utiliser le format user: pass @ host directement dans l’URL.

Utilisation de la bibliothèque de requêtes :

 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 } ); 

J’ai aussi écrit un petit article de blog à ce sujet.

 var username = "Ali"; var password = "123"; var auth = "Basic " + new Buffer(username + ":" + password).toSsortingng("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); } ); 

pour ce que ça vaut, j’utilise node.js 0.6.7 sur OSX et je ne pouvais pas obtenir l’autorisation :

 var http = require("http"); var auth = 'Basic ' + new Buffer("username:password").toSsortingng('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); }); }); 

Je suis tombé sur cela récemment. Parmi les en têtes d’ permissions et d’ permissions de proxy à définir dépend du serveur auquel le client s’adresse. S’il s’agit d’un serveur Web, vous devez définir l’ autorisation et, s’il s’agit d’un proxy, vous devez définir l’en tête Proxy-Authorization.

Ce code fonctionne dans mon cas, après beaucoup de recherches. Vous aurez besoin d’installer le package de demande npm .

 var url = "http://api.example.com/api/v1/?param1=1&param2=2"; var auth = "Basic " + new Buffer(username + ":" + password).toSsortingng("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); }); }