我尝试使用Charles和我的localhost apache服务器使用XCode 6.1和iOS模拟器8.1检查http(非SSL)流量。
我的Charles工作正常,但只有在我使用本地网络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
,还是有更好的方法来处理开发团队的特定于环境的设置?
答案 0 :(得分:4)
使用localhost.charlesproxy.com
代替localhost
。这是在charlesproxy.com DNS上设置为指向127.0.0.1,并且始终会。而且因为它不是localhost
,它应该绕过操作系统localhost
的硬连线逻辑。
也可以使用local.charles
,但前提是Charles实际上正在运行并且您将其用作代理。所以我更喜欢localhost.charlesproxy.com
解决方案。
我也会更新该常见问题解答。
答案 1 :(得分:2)
我找到了一个可以接受的解决方案。它涉及编辑hosts文件以为localhost创建别名。每个开发人员都必须在他/她的开发机器上执行此操作,但之后应该顺利进行。
运行echo '127.0.0.1 local.website.com' >> "/etc/hosts"
,然后将主机配置代码更改为以下内容:
#if DEBUG
var API_HOST = "http://local.website.com"
#else
var API_HOST = "https://website.com"
#endif
答案 2 :(得分:1)
我使用的是主机名而不是localhost。要获取主机名,只需在终端中输入hostname
,然后将网址更改为"http://your-host-name"
答案 3 :(得分:0)
同样的问题发生在我身上。使用我的计算机名称而不是“localhost”解决了我的问题,并允许在Charles上显示它。例如,我的计算机名称是“sukwon”,我使用“http://sukwon.local”而不是使用“http://localhost”来解决它。