29

これは私が、単純なGETリクエストをしなければならないコードです:NodeJSに基づくHTTPクライアント:要求を認証する方法は?

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' manualに基本的なhttp認証に関連するものが見つかりませんでした。 ありがとうございます。

答えて

47

Base64でエンコードされたヘッダーのようなオプションにAuthorizationを追加する必要があります。あなたのオプションが好き:あなたもちょうど認証パラメータ(パスワードなしのエンコード形式のユーザー名での):追加することができ、より新しいバージョンで

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

Hereは、基本的なHTTP認証に関する情報です。

+0

私はNodeJSのhttpライブラリでどのように動作するのかわかりません...ユーザ名とパスワードでbase64エンコードされた文字列をどこに置くのですか? –

22

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

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

(注:v0.10.3でテスト)

0

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 
}); 
関連する問題