2012-01-02 11 views
38

ile bir proxy kullanılabilir mi?(fiddler gibi) node.js proxy üzerinden ve rota (örneğin Fiddler gibi) tüm ClientRequest 's bir proxy tanımak için kurulum olabilir node.js en ClientRequest

Windows üzerinde düğüm kullanıyorum ve çok ben tarayıcıda JavaScript için Fiddler kullanarak olur gibi http isteklerini hata ayıklamak istiyorum.

Daha açıkçası, ben sunucusu tarafından alınan bir proxy ne de vekil istekleri oluşturmaya çalışmıyorum. Bir proxy üzerinden http.request() tarafından yapılan istekleri yönlendirmek istiyorum. Bir tarayıcıda istekte bulunursam, isteği ve yanıtı incelemek için Fiddler'ı kullanmak istiyorum.

cevap

23

istemci-istekler, böyle seçenekleriniz-nesne (ex Eğer http.request oluşturmak .: hemen önce) değiştirmek: Eğer düğümden giden reqeusts montior istiyorsanız

options.path = 'http://' + options.host + ':' + options.port + options.path; 
options.headers.host = options.host; 
options.host = '127.0.0.1'; 
options.port = 8888; 

myReq = http.request(options, function (result) { 
    ... 
}); 
+0

Bu benim için işe yaramadı: { "kod": "ETIMEDOUT", "errno": "ETIMEDOUT req 'hatası' olayı aşağıdaki hata nesnesi, { "hata" ile tetiklenen "," syscall ":" connect "}} bu büyütme olmadan bağlantı kurulmasını istemiş. – Drew

+1

@Drew Bu, genellikle güvenlik duvarınızın geri döngü bağlantısını engellediği anlamına gelir. – EricLaw

+0

@Drew. Ayrıca, korsan yapılandırmanızın (varsayılan) 8888 – Naraen

6

Eğer request modülünü

kullanabilir ve sadece bu

request.post('http://204.145.74.56:3003/test', { 
headers :{ 'content-type' : 'application/octet-stream'}, 
'body' : buf , 
proxy: 'http://127.0.0.1:8888' 
}, function() { 
    //callback 
}); 
gibi seçeneklerde vekil özelliğini ayarlayın

8888, kemancının varsayılan bağlantı noktasıdır.

46

ben şık olmaya aşağıdakileri bulabilirsiniz. request modülü, windows ortam değişkeninden proxy bilgilerini okur. pencerelerde aşağıdaki Yazma

kabuk ömrü boyunca bunu ayarlayacaktır, komut satırı. Düğüm uygulamanızı bu kabuktan çalıştırmanız yeterlidir.

set https_proxy=http://127.0.0.1:8888 
set http_proxy=http://127.0.0.1:8888 
set NODE_TLS_REJECT_UNAUTHORIZED=0 
+2

Büyük çözüm yerine farklı bir bağlantı noktasında dinlenmesi olabilir. Bunu değiştirmek için kod değiştirmeyi gerektirmez. – Sam

+2

Bash kabuğunu kullanarak, 'export' için 'export' seçeneğini değiştirin ve işe yarayacaktır. nedense – mwotton

+0

Çalışıyorsa vekil olarak kemancı kullanacak NODE_TLS_REJECT_UNAUTHORIZED = 1 eser – Chookoos

4
process.env.https_proxy = "http://127.0.0.1:8888"; 
process.env.http_proxy = "http://127.0.0.1:8888"; 
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; 
+0

Bir tarayıcı ayarlamak, ancak çalışmıyorsa değilse. Tarayıcının isteği her iki durumda da çalışır. Node.js'in istek kitaplığını kullanarak aynı davranışı nasıl alırım? – user1738579

İlgili konular