2014-11-26 17 views
7

Sto tentando di ispezionare il traffico http (non SSL) utilizzando XCode 6.1 e iOS Simulator 8.1 utilizzando Charles e il mio server Apache localhost.Xcode Charles (Proxy HTTP) non acquisisce traffico localhost

Ho Charles che funziona correttamente, ma cattura solo il traffico quando utilizzo l'indirizzo IP della mia rete locale: 192.168.1.X come host di destinazione per le richieste in iOS.

Ho provato gli altri suggerimenti dall'articolo Charles here, ma nessuno funziona tranne l'indirizzo IP della rete locale.

"Perché non utilizzare solo l'IP della rete locale?", Chiedi ?. Bene, vorrei evitare YASCE (ancora un'altra eccezione per il controllo del codice sorgente). Vedete, il mio codice sorgente ha questo nella sezione di networking:

#if DEBUG 
    var API_HOST = "http://localhost" 
#else 
    var API_HOST = "https://website.com" 
#endif 

mi piacerebbe evitare di forzare ogni sviluppatore del team di rendere costantemente considerazioni particolari per evitare il check-in proprio indirizzo IP personale ogni volta che stanno commettendo per il controllo del codice sorgente.

C'è un altro modo in cui posso convincere il simulatore iOS a passare http://localhost tramite Charles o esiste un modo migliore per gestire le impostazioni specifiche dell'ambiente con un team di sviluppo?

risposta

4

Uso localhost.charlesproxy.com invece di localhost. Questo è il setup sul DNS di charlesproxy per puntare a 127.0.0.1, e lo sarà sempre. E poiché non è letteralmente lo localhost lo dovrebbe ignorare la logica cablata del sistema operativo per localhost.

È inoltre possibile utilizzare local.charles, ma solo se Charles è effettivamente in esecuzione e lo si utilizza come proxy. Quindi preferisco la soluzione localhost.charlesproxy.com.

Aggiornerò anche queste domande frequenti.

+0

Nota: assicurati di aggiungere 'localhost.charlesproxy.com' al tuo filtro" Includi ", se hai attivato in" Impostazioni di registrazione ". Altrimenti le richieste non verranno visualizzate. > ..< –

+0

Ricevo un errore su localhost: 3000 direttamente o tramite uno di questi indirizzi (local.charles: 3000, localhost.charlesproxy.com:3000), quando è in esecuzione Charles. Nuova installazione di charles, OSX 10.11.4. Ho provato a utilizzare il proxy SOCKS invece e lo stesso errore. Screenshot dell'errore per tutti e 3 gli indirizzi: https://s3.amazonaws.com/f.cl.ly/items/0b162j1v2A2O3O1X2C3o/Charles_Error_Report.png – Jay

0

Lo stesso problema è successo a me. Usando il nome del mio computer invece di "localhost" ho risolto il mio problema e abilitato a visualizzarlo su Charles. Ad esempio, il nome del mio computer è "sukwon" e l'ho risolto usando "http://sukwon.local" invece di utilizzare "http://localhost"

+0

Sfortunatamente, non risolve il problema sottostante. Se lavori in una squadra con due persone, è improbabile che abbiano lo stesso nome computer. Quindi avrai costantemente conflitti nel tuo file xcodeproj quando utilizzi un repository di codice condiviso. –

2

Ho trovato un lavoro accettabile. Implica la modifica del file hosts per creare un alias per localhost. Ogni sviluppatore dovrà farlo sulla sua macchina di sviluppo, ma dopo dovrebbe essere in grado di navigare senza problemi.

Esegui echo '127.0.0.1 local.website.com' >> "/etc/hosts" e quindi modificare il codice di configurazione ospite a qualcosa di simile:

#if DEBUG 
    var API_HOST = "http://local.website.com" 
#else 
    var API_HOST = "https://website.com" 
#endif 
1

Sto usando il mio nome host invece di localhost. Per ottenere il vostro nome host è sufficiente digitare hostname nel terminale e quindi modificare l'URL per "http://your-host-name"

+0

Questa non è una soluzione accettabile per questa domanda. Funziona, ma non impedisce agli sviluppatori di dover ricorrere al codice speciale per i loro indirizzi endpoint. –

Problemi correlati