Подтвердить что ты не робот

HTTP-клиент на основе NodeJS: как проверить подлинность запроса?

Это код, который я должен сделать простым запросом 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);
    });
});

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

4b9b3361

Ответ 1

Вам нужно добавить авторизацию к таким параметрам, как заголовок, закодированный с помощью base64. Как:

var options = {
    host: 'localhost',
    port: 8000,
    path: '/restricted',
    headers: {
     'Authorization': 'Basic ' + new Buffer(uname + ':' + pword).toString('base64')
   }         
};

Ответ 2

В новой версии вы также можете добавить параметры auth (в формате username: password, no encoding):

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

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

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

Ответ 3

Я предлагаю использовать request для этого, он поддерживает функции широкого диапазона, включая 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
});

Ответ 4

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