29

Este es el código que tengo que hacer un simple petición GET:Cliente HTTP basado en NodeJS: cómo autenticar una solicitud?

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

Pero ese camino "/ restringido" requiere un simple autenticación básica HTTP. ¿Cómo agrego las credenciales para autenticar? No pude encontrar nada relacionado con la autenticación http básica en NodeJS' manual. Gracias de antemano.

Respuesta

47

Debe agregar la Autorización a las opciones como un encabezado codificado con base64. Al igual que:

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

Here es información sobre la autenticación HTTP básica.

+0

supe cómo funciona, pero me parece que no puede entender cómo no hacerlo con las bibliotecas http nodejs' ... ¿Dónde pongo que base64 cadena con mi nombre de usuario y contraseña? –

22

En una versión más reciente también puede simplemente añadir auth parámetro (en formato de nombre de usuario: contraseña, sin codificación) a sus opciones:

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

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

(NOTA: probado en v0.10.3)

0

Sugiero usar el módulo request para eso, admite funcionalidades de amplio rango, incluida la Autenticación Básica 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 
}); 
Cuestiones relacionadas