2014-05-10 10 views
16

Próbuję użyć modułu request w mojej aplikacji node.js i muszę skonfigurować ustawienia proxy z uwierzytelnianiem.Uwierzytelnianie proxy w pliku node.js z żądaniem modułu

Moje ustawienia to coś takiego:

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

Jak mogę ustawić konfigurację serwera proxy, kiedy złożyć wniosek? Czy ktoś mógłby mi podać przykład? Dzięki

Odpowiedz

24

Oto przykład jak skonfigurować (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

Twoja odpowiedź pomogła mi dostać się do miejsca, gdzie muszę być dla kopalni. +1 –

+0

Nie ma odpowiedzi, gdy to zrobię. Czy znasz jakiś szczególny powód? –

+0

Victor, dziękuję! – Qulery

12

Zaakceptowanych odpowiedź nie jest źle, ale chciałem przejść alternatywę że spełnione trochę innej potrzebie że znalazłem .

Mój projekt ma w szczególności szeroką gamę serwerów proxy do wyboru, a nie tylko jeden. Dlatego za każdym razem, gdy wysyłam żądanie, nie ma większego sensu ponowne ustawienie obiektu request.defaults. Zamiast tego możesz po prostu przekazać je bezpośrednio do opcji żądania.

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

reqProxy.getProxy() zwraca ciąg do równowartości [protocol]://[username]:[pass]@[address]:[port]

następnie dokonać żądania

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

nadzieję, że to pomaga kogoś, kto idzie to z tym samym problemem. Twoje zdrowie.

+0

Czy reqProxy to kolejny pakiet? – sidonaldson

+1

@sidonaldson Nie, reqProxy to tylko moduł, który napisałem, aby podać ciąg znaków proxy. –

+0

działa, dziękuję =) –

5

paramater Pełnomocnik wykonuje ciąg z URL serwera proxy, w moim przypadku serwer proxy był na 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 } 
    }) 
}); 
Powiązane problemy