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¶m2=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¶m2=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); }); }