2014-11-26 5 views
7

Charles와 localhost apache 서버를 사용하여 XCode 6.1 및 iOS Simulator 8.1을 사용하여 http (비 SSL) 트래픽을 검사하려고합니다.Xcode Charles (HTTP 프록시)가 localhost 트래픽을 캡처하지 않습니다.

챨스가 제대로 작동하지만 로컬 네트워크 IP 주소 인 192.168.1.X을 iOS의 요청 대상 호스트로 사용할 때만 트래픽을 캡처합니다.

찰스 기사 here의 다른 제안을 시도했지만 로컬 네트워크 IP 주소 이외의 다른 작업은 시도하지 않았습니다.

"로컬 네트워크 IP를 사용하지 않는 이유는 무엇입니까?" 음, YASCE (또 다른 소스 제어 예외)를 피하고 싶습니다. 당신은 참조 내 소스 코드가 네트워크 섹션이 있습니다

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

나는 끊임없이 특별한 고려가 자신의 개인 IP 주소가 투입 될 때마다 확인 피할 수 있도록 팀에 모든 개발자를 강제하지 않도록하고 싶습니다 소스 제어.

iOS 시뮬레이터에서 Charles를 통해 http://localhost을 전달하도록 설득 할 수있는 또 다른 방법이 있습니까? 아니면 개발 팀에서 환경 별 설정을 처리하는 더 좋은 방법이 있습니까?

답변

4

으로 변경하십시오. localhost 대신 localhost.charlesproxy.com을 사용하십시오. 이것은 charlesproxy.com DNS에서 127.0.0.1을 가리키며 항상 설정됩니다. 그리고 문자 그대로는 아니기 때문에 localhostlocalhost에 대한 OS의 하드웨어 로직을 우회해야합니다.

local.charles을 사용할 수도 있지만 Charles가 실제로 실행 중이며 프록시로 사용하고있는 경우에만 가능합니다. 따라서 나는 localhost.charlesproxy.com 솔루션을 선호합니다.

해당 FAQ도 업데이트 할 예정입니다.

+0

참고 : "기록 설정"에서 설정 한 경우 "필터"에'localhost.charlesproxy.com'을 반드시 추가하십시오. 그렇지 않으면 요청이 표시되지 않습니다. > ..< –

+0

charles가 실행 중일 때 localhost : 3000에서 오류가 발생합니다 (local.charles : 3000, localhost.charlesproxy.com:3000). 찰스, OSX 10.11.4의 새로 설치. SOCKS 프록시 대신 같은 오류를 사용해 보았습니다. 세 가지 주소 모두에 대한 오류 스크린 샷 : https://s3.amazonaws.com/f.cl.ly/items/0b162j1v2A2O3O1X2C3o/Charles_Error_Report.png – Jay

0

동일한 문제가 발생했습니다. "localhost"대신 내 컴퓨터 이름을 사용하여 내 문제를 해결하고이를 Charles에 표시 할 수있게합니다. 예를 들어 컴퓨터 이름이 "sukwon"이고 "http://localhost"대신 "http://sukwon.local"을 사용하여 해결했습니다.

+0

불행히도 기본 문제를 해결하지 못합니다. 두 사람이있는 팀에서 작업하는 경우 동일한 컴퓨터 이름을 사용하지 않을 가능성이 있습니다. 그러면 공유 코드 저장소를 사용할 때 xcodeproj 파일에 계속 충돌이 생깁니다. –

2

사용할 수있는 해결책을 찾았습니다. localhost에 대한 별명을 작성하기 위해 호스트 파일을 편집해야합니다. 각 개발자는 자신의 개발 컴퓨터에서이 작업을 수행해야하지만 그 후에는 원활하게 항해해야합니다.

실행 echo '127.0.0.1 local.website.com' >> "/etc/hosts" 한 다음 이런 식으로 호스트 설정 코드를 변경 : 내가 localhost를 대신 내 호스트 이름을 사용하고

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

. 호스트 이름을 얻으려면 터미널에 hostname을 입력 한 다음 URL을 "http://your-host-name"

+0

이 질문에 대한 해결책은 아닙니다. 작동하지만 개발자가 코드에서 끝점 주소를 특수화하지 않아도되는 것은 아닙니다. –