2013-06-29 13 views
16

regolare client richieste avviate al server del nodo vengono catturate bene in Fiddler. Tuttavia, le richieste inviate dal nodo a un servizio Web non vengono acquisite. Non ha aiutato a passare in config per il proxy (127.0.0.1:8888) al metodo di richiesta. Come posso instradare i messaggi della richiesta tramite Fiddler?Come catturare messaggi HTTP dalla libreria Richiesta nodo con Fiddler

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"); 
}); 

Richiesta repo: https://github.com/mikeal/request

+1

L'impostazione del proxy sull'oggetto richiesta * dovrebbe * essere tutto ciò che devi fare, ma non vedo una proprietà "proxy" nei documenti? http://nodejs.org/api/http.html#http_http_request_options_callback – EricLaw

+0

Sto utilizzando il pacchetto di richiesta di terze parti. Link nella descrizione. – mupersan82

+0

Rovistando nella fonte, sembra implicare che la sintassi sarebbe "hostname" piuttosto che "host"? Oppure potresti definire proxy come stringa "http://127.0.0.1:8888" piuttosto che come oggetto? – EricLaw

risposta

21

Ho solo cercato di fare da solo (usando Fiddler e la libreria richiesta da parte NPM). Ecco come ho ottenuto che funziona:

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"); 
}); 

Questo è con Fiddler2 utilizzando la porta di default e opzioni proxy (e senza l'autenticazione proxy).

+2

Grazie mille. l'impostazione NODE_TLS_REJECT_UNAUTHORIZED aiuta davvero. Senza di esso, la richiesta di https non funzionerà per me. Solo curioso, cosa significa questa variabile d'ambiente? – Habibi

+0

Credo che consenta al Nodo di utilizzare certificati SSL autofirmati, che normalmente costituirebbero un rischio per la sicurezza, ma in questo caso è quello che vuoi :) – idolize

5

Fiddler funziona impostando il vostro "Opzioni Internet" (dal menu Start) "Connessioni"> "Impostazioni LAN"> "proxy server" per il suo porto, rendendo così tutte HTTP traffico (clienti che obbedire questa impostazione) passare attraverso di essa.

è necessario indicare la lib cliente node.js utilizzare un proxy, le impostazioni sono scritte in quella finestra di dialogo Opzioni dopo aver avviato Fiddler.

+1

Non è quello che sto già facendo? – mupersan82

+0

Hai modificato la tua domanda o ho ricevuto un vero blackout e ho perso quella parte nell'esempio di codice? LOL – Poni

+1

Sebbene il proxy sia implicitamente menzionato nel primo post, questo mi ha risolto il problema attirando la mia attenzione in modo più esplicito. Grazie @poni. – sfuqua

4

L'opzione delega dovrebbe essere un URL completo, come questo:

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

per fare questo su una base ad hoc, senza modificare il codice, è possibile utilizzare le variabili di ambiente.

Richiesta aspetti:

  • HTTP_PROXY
  • https_proxy
  • NO_PROXY

Quindi, per delega solo impostare questi nella vostra console prima di eseguire il processo.

Ad esempio, per http e https impostazione utilizzo di proxy:

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

Quest'ultima linea ferma problemi con SSL attraverso il proxy violinista.

Problemi correlati