2014-11-26 42 views
7

Próbuję sprawdzić ruch http (nie-SSL) przy użyciu XCode 6.1 i iOS Simulator 8.1, używając Charlesa i mojego lokalnego serwera apache.Xcode Charles (HTTP Proxy) nie przechwytuje ruchu localhost

Mam działać poprawnie, ale przechwytuje ruch tylko wtedy, gdy używam adresu IP mojej lokalnej sieci: 192.168.1.X jako hosta docelowego dla żądań w iOS.

Próbowałem innych sugestii z artykułu Charlesa here, ale żaden nie działa z wyjątkiem adresu IP sieci lokalnej.

"Dlaczego nie po prostu użyć adresu IP sieci lokalnej?", Pytasz ?. Cóż, chciałbym uniknąć YASCE (kolejny wyjątek kontroli źródła). Widzisz, mój kod źródłowy ma to w sekcji Sieć:

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

Chciałbym uniknąć zmuszając każdy programista w zespole stale wprowadzać specjalne względy w celu uniknięcia kontroli we własnym adresem IP osobisty za każdym razem są one zobowiązującego do kontroli źródła.

Czy jest inny sposób, w jaki mogę przekonać symulator iOS do przekazania http://localhost przez Charlesa, czy istnieje lepszy sposób na obsługę ustawień środowiskowych z zespołem programistów?

Odpowiedz

4

Użyj localhost.charlesproxy.com zamiast localhost. To konfiguracja DNS na charlesproxy.com, aby wskazywała 127.0.0.1 i zawsze będzie. A ponieważ nie jest to konieczne, należy ominąć systemową logikę systemu operacyjnego pod kątem localhost.

Możliwe jest również użycie local.charles, ale tylko wtedy, gdy Charles faktycznie działa i używasz go jako swojego serwera proxy. Więc wolę rozwiązanie localhost.charlesproxy.com.

Zaktualizuję również te często zadawane pytania.

+0

Uwaga: Pamiętaj, aby dodać "localhost.charlesproxy.com" do filtru "Uwzględnij", jeśli zostało to włączone w "Ustawienia nagrywania". W przeciwnym razie żądania nie będą wyświetlane. > ..< –

+0

Otrzymuję błąd w localhost: 3000 bezpośrednio lub przez jeden z tych adresów (local.charles: 3000, localhost.charlesproxy.com:3000), gdy uruchomiony jest charles. Świeża instalacja charles, OS X 10.11.4. Próbowałem używać proxy SOCKS zamiast tego samego błędu. Zrzut ekranu błędu dla wszystkich 3 adresów: https://s3.amazonaws.com/f.cl.ly/items/0b162j1v2A2O3O1X2C3o/Charles_Error_Report.png – Jay

0

Ten sam problem przydarzył mi się. Używanie nazwy mojego komputera zamiast "localhost" rozwiązało mój problem i umożliwiło wyświetlenie go na komputerze Charles. Na przykład nazwa mojego komputera to "sukwon" i rozwiązałem je, używając "http://sukwon.local" zamiast "http://localhost"

+0

Niestety, to nie rozwiązuje podstawowego problemu. Jeśli pracujesz w zespole z dwiema osobami, nie jest prawdopodobne, że będą one miały tę samą nazwę komputera. Wtedy będziesz mieć ciągłe konflikty w swoim pliku xcodeproj podczas korzystania z udostępnionego repozytorium kodu. –

2

Znalazłem akceptowalne obejście. Obejmuje edytowanie pliku hosts w celu utworzenia aliasu dla localhost. Każdy programista będzie musiał to zrobić na swojej maszynie programistycznej, ale po tym powinien być płynny.

Run echo '127.0.0.1 local.website.com' >> "/etc/hosts" a następnie zmienić gospodarza kod konfiguracyjny do czegoś takiego:

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

używam mojego hosta zamiast localhost. Aby uzyskać nazwę hosta, po prostu wpisz hostname w terminalu, a następnie zmień adres URL na "http://your-host-name"

+0

To nie jest akceptowalne rozwiązanie dla tego pytania. To działa, ale nie uniemożliwia programistom tworzenia specjalnych adresów punktów końcowych w kodzie. –