2013-06-29 65 views
16

在Fiddler中捕獲到節點服務器的常規客戶端啓動請求。但是,從節點發送到Web服務的請求未被捕獲。它沒有幫助將代理(127.0.0.1:8888)的配置傳遞給請求方法。我如何通過Fiddler路由請求消息?如何使用Fiddler從請求節點庫中捕獲http消息

var http = require('http'); 
var request = require('request'); 

request.get(webserviceURL, { "auth" : {"user": "user", "pass" = "pass", sendImmediately: true }, 
"proxy" : { "host" : "127.0.0.1", "port" : 8888 }}, 
function (error, response) { console.log("response received"); 
}); 

請求回購:https://github.com/mikeal/request

+1

在請求對象*上設置代理應該是您需要做的所有事情,但在文檔中沒有看到「代理」屬性? http://nodejs.org/api/http.html#http_http_request_options_callback – EricLaw

+0

我正在使用第三方請求包。描述中的鏈接。 – mupersan82

+0

在源代碼中,似乎暗示語法將是「主機名」而不是「主機」?或者你可以定義代理作爲字符串「http://127.0.0.1:8888」,而不是作爲一個對象? – EricLaw

回答

21

我只是試圖做這我自己(使用招和NPM請求庫)。以下是我得到它的工作:

process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'; // Ignore 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' authorization error 

// Issue the request 
request(
{ 
    method: "GET", 
    uri: "https://secure.somewebsite.com/", 
    proxy: "http://127.0.0.1:8888" // Note the fully-qualified path to Fiddler proxy. No "https" is required, even for https connections to outside. 
}, 
function(err, response, body) { 
    console.log("done"); 
}); 

這是使用Fiddler2默認端口和代理選項(沒有代理認證)。

+2

非常感謝。 NODE_TLS_REJECT_UNAUTHORIZED設置真的有幫助。沒有它,https請求將不適用於我。只是好奇,這個環境變量是什麼意思? – Habibi

+0

我相信它允許Node使用自簽名SSL證書,這通常會帶來安全風險,但在這種情況下,它就是您想要的:) – idolize

5

提琴手的工作原理是設置你的「Internet選項」(從開始菜單)「連接」>「局域網設置」>「代理服務器」到它的端口,從而使所有的HTTP交通(客戶端服從這個設置)通過它。

您應該指出您的node.js客戶端庫使用代理,設置在啓動Fiddler後寫入該選項對話框中。

+1

那不是我已經在做什麼? – mupersan82

+0

您是否編輯了您的問題,或者我是否得到了真正的停電並錯過了代碼示例中的那部分內容? LOL – Poni

+1

儘管代理在第一篇文章中被隱式提及,但這個代碼更明確地吸引了我的注意,解決了這個問題。謝謝@poni。 – sfuqua

4

代理選項應該是一個完整的URL,就像這樣:

proxy : "http://127.0.0.1:8888" 
1

要在特定的基礎上完成此操作,而不更改代碼,可以使用環境變量。

請求方面:

  • HTTP_PROXY
  • HTTPS_PROXY
  • NO_PROXY

所以,代理只是這些設置在控制檯上運行的過程之前。

例如,爲了設置http和https代理使用:

set HTTP_PROXY="http://127.0.0.1:8888" 
set HTTPS_PROXY="http://127.0.0.1:8888" 
set NODE_TLS_REJECT_UNAUTHORIZED=0 

後者線通過提琴手代理停止與SSL的問題。

相關問題