29

Jest to kod mam zrobić prosty wniosek otrzymujemy:Klient HTTP oparty na NodeJS: Jak uwierzytelnić żądanie?

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

ale ścieżki „/ restricted” wymaga prostego uwierzytelniania podstawowego HTTP. Jak dodać dane uwierzytelniające do uwierzytelnienia? Nie mogłem znaleźć niczego związanego z podstawowym uwierzytelnianiem http w NodeJS' manual. Z góry dzięki.

Odpowiedz

47

Musisz dodać autoryzację do opcji takich jak nagłówek zakodowany w base64. Jak:

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

Here to niektóre informacje na temat podstawowego uwierzytelniania HTTP.

+0

Wiedziałem, jak to działa, ale nie mogę zrozumieć, jak to zrobić z bibliotekami http NodeJS ... Gdzie mogę umieścić ten kodowany kod base64 z moją nazwą użytkownika i hasłem? –

22

w nowszych wersji można też po prostu dodać auth parametr (w formacie nazwa_użytkownika: hasło, bez kodowania) do opcji:

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

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

(UWAGA: testowany na v0.10.3)

0

Proponuję użyć do tego celu modułu request, który obsługuje szeroką funkcjonalność, w tym podstawowe uwierzytelnianie HTTP.