2014-05-10 5 views
16

Sto provando a utilizzare il modulo request nella mia app node.js e ho bisogno di configurare le impostazioni proxy con l'autenticazione.autenticazione proxy in node.js con richiesta modulo

mie impostazioni sono qualcosa di simile:

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

Come posso impostare la mia configurazione proxy quando faccio una richiesta? Qualcuno potrebbe darmi un esempio? grazie

risposta

24

Ecco un esempio di come configurare (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) { 
    ... 
}) 
+2

La tua risposta mi ha aiutato ad arrivare dove avevo bisogno di essere per il mio. +1 –

+0

Non c'è risposta quando lo faccio. Conosci qualche motivo particolare? –

+0

Victor, grazie! – Qulery

12

La risposta accettata non è sbagliato, ma ho voluto passare lungo un'alternativa che ha soddisfatto un po 'di un bisogno diverso che ho trovato .

Il mio progetto in particolare ha una serie di proxy tra cui scegliere, non solo uno. Quindi, ogni volta che faccio una richiesta, non ha molto senso reimpostare l'oggetto request.defaults. Invece, puoi semplicemente passarlo direttamente alle opzioni di richiesta.

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

reqProxy.getProxy() restituisce una stringa per l'equivalente di [protocol]://[username]:[pass]@[address]:[port]

Poi fare la richiesta

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

Spero che questo aiuti qualcuno che sta venendo fuori questo con lo stesso problema. Saluti.

+0

reqProxy è un altro pacchetto? – sidonaldson

+1

@sidonaldson No, reqProxy è solo un modulo che ho scritto per servire la stringa del proxy. –

+0

funzionante, grazie =) –

5

il proxy paramater prende una stringa con l'URL per il server proxy, nel mio caso il server proxy era a 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 } 
    }) 
});