HTTP-клиент на основе NodeJS: как аутентифицировать запрос? - PullRequest
29 голосов
/ 03 августа 2011

Это код, который я должен сделать для простого запроса GET:

var options = {
    host: 'localhost',
    port: 8000,
    path: '/restricted'
};

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

Но этот путь "/ ограниченный" требует простой базовой проверки подлинности HTTP.Как добавить учетные данные для аутентификации?В руководстве NodeJS я не смог найти ничего, связанного с базовой аутентификацией http.Заранее спасибо.

Ответы [ 4 ]

50 голосов
/ 03 августа 2011

Вам необходимо добавить Авторизацию к опциям, как заголовок, закодированный с base64.Нравится:

var options = {
    host: 'localhost',
    port: 8000,
    path: '/restricted',
    headers: {
     'Authorization': 'Basic ' + new Buffer(uname + ':' + pword).toString('base64')
   }         
};
22 голосов
/ 18 ноября 2013

В новой версии вы также можете просто добавить параметр auth (в формате имя пользователя: пароль, без кодировки) к вашим параметрам:

var options = {
    host: 'localhost',
    port: 8000,
    path: '/restricted',
    auth: username + ':' + password
};

request = http.get(options, function(res){
    //...
});

(ПРИМЕЧАНИЕ: проверено на v0.10.3)

0 голосов
/ 22 апреля 2016

Я предлагаю использовать для этого модуль request , он поддерживает широкий спектр функций, включая базовую аутентификацию HTTP.

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
});
0 голосов
/ 03 августа 2011

Здесь - некоторая информация об базовой аутентификации HTTP.

...