2014-05-10 15 views
16

Tôi đang cố sử dụng mô-đun request trong ứng dụng node.js của mình và tôi cần định cấu hình cài đặt proxy có xác thực.xác thực proxy trong node.js với yêu cầu mô-đun

thiết lập của tôi là một cái gì đó như thế này:

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

Làm thế nào tôi có thể thiết lập cấu hình proxy của tôi khi tôi thực hiện một yêu cầu? Ai đó có thể cho tôi một ví dụ? nhờ

Trả lời

24

Dưới đây là một ví dụ về cách cấu hình (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

câu trả lời của bạn đã giúp tôi có được đến nơi mà tôi cần phải cho tôi. +1 –

+0

Không có phản hồi khi tôi thực hiện việc này. Bạn có biết lý do cụ thể nào không? –

+0

Victor, Cảm ơn bạn! – Qulery

12

Câu trả lời được chấp nhận là không sai, nhưng tôi muốn vượt qua cùng một sự thay thế mà hài lòng một chút của một nhu cầu khác nhau mà tôi tìm thấy .

Dự án của tôi nói riêng có một loạt proxy để chọn, không chỉ một. Vì vậy, mỗi khi tôi thực hiện một yêu cầu, nó không có ý nghĩa nhiều để thiết lập lại đối tượng request.defaults. Thay vào đó, bạn chỉ có thể chuyển trực tiếp thông qua các tùy chọn yêu cầu.

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

reqProxy.getProxy() trả về một chuỗi tương đương với [protocol]://[username]:[pass]@[address]:[port]

Sau đó thực hiện theo yêu cầu

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

Hope this helps ai được đến cùng này với cùng một vấn đề. Chúc mừng.

+0

Đang reqProxy một gói khác? – sidonaldson

+1

@sidonaldson Không, reqProxy chỉ là một mô-đun tôi đã viết để phục vụ chuỗi proxy. –

+0

đang hoạt động, cảm ơn bạn =) –

5

proxy paramater mất một chuỗi với url cho máy chủ proxy của bạn, trong trường hợp của tôi máy chủ proxy đang ở 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 } 
    }) 
}); 
Các vấn đề liên quan