HTTP Client based on NodeJS: How to authenticate a request?
This is the code I have to make a simple GET request:
var options = {
host: 'localhost',
port: 8000,
path: '/restricted开发者_JS百科'
};
request = http.get(options, function(res){
var body = "";
res.on('data', function(data) {
body += data;
});
res.on('end', function() {
console.log(body);
})
res.on('error', function(e) {
console.log("Got error: " + e.message);
});
});
But that path "/restricted" requires a simple basic HTTP authentication. How do I add the credentials to authenticate? I couldn't find anything related to basic http authentication in NodeJS' manual. Thanks in advance.
You need to add the Authorization to the options like a header encoded with base64. Like:
var options = {
host: 'localhost',
port: 8000,
path: '/restricted',
headers: {
'Authorization': 'Basic ' + new Buffer(uname + ':' + pword).toString('base64')
}
};
In newer version you can also just add auth parameter (in format username:password, no encoding) to your options:
var options = {
host: 'localhost',
port: 8000,
path: '/restricted',
auth: username + ':' + password
};
request = http.get(options, function(res){
//...
});
(NOTE: tested on v0.10.3)
I suggest to use request module for that, it support wide range functionalities including HTTP Basic Authentication.
var username = 'username',
password = 'password',
url = 'http://' + username + ':' + password + '@some.server.com';
request({url: url}, function (error, response, body) {
// Do more stuff with 'body' here
});
Here is some information on basic HTTP authentication.
精彩评论