web-dev-qa-db-ja.com

モジュール要求を使用したnode.jsでのプロキシ認証

Node.jsアプリでモジュール request を使用しようとしていますが、認証でプロキシ設定を構成する必要があります。

私の設定は次のようなものです:

proxy:{
    Host:"proxy.foo.com",
    port:8080,
    user:"proxyuser",
    password:"123"
}

リクエストを行うときにプロキシ構成を設定するにはどうすればよいですか?誰かが例を教えてもらえますか?ありがとう

25
Victor

設定方法の例を次に示します( https://github.com/mikeal/request/issues/894 ):

//...some stuff to get my proxy config (credentials, Host and port)
var proxyUrl = "http://" + user + ":" + password + "@" + Host + ":" + port;

var proxiedRequest = request.defaults({'proxy': proxyUrl});

proxiedRequest.get("http://foo.bar", function (err, resp, body) {
  ...
})
39
Victor

受け入れられた答えは間違っていませんが、私が見つけた別のニーズを少し満たした代替案を伝えたかったのです。

特に私のプロジェクトには、1つだけでなく、選択できるプロキシの配列があります。したがって、リクエストを行うたびに、request.defaultsオブジェクトを再設定しても意味がありません。代わりに、リクエストオプションに直接渡すことができます。

_var reqOpts = {
    url: reqUrl, 
    method: "GET", 
    headers: {"Cache-Control" : "no-cache"}, 
    proxy: reqProxy.getProxy()};
_

reqProxy.getProxy()は、_[protocol]://[username]:[pass]@[address]:[port]_と同等の文字列を返します

その後、リクエストを行います

_request(reqOpts, function(err, response, body){
    //handle your business here
});
_

これが同じ問題でこれに沿って来ている誰かを助けることを願っています。乾杯。

19
James LeClair

プロキシパラメータは、プロキシサーバーのURLを含む文字列を受け取ります。私の場合、プロキシサーバーはhttp://127.0.0.1:8888にありました

request({ 
    url: 'http://someurl/api',
    method: 'POST',
    proxy: 'http://127.0.0.1:8888',
    headers: {
        'Content-Length': '2170',
        'Cache-Control': 'max-age=0'
    },
    body: body
  }, function(error, response, body){
    if(error) {
        console.log(error);
    } else {
      console.log(response.statusCode, body);
    }

    res.json({ 
      data: { body: body } 
    })
});
8
svnm