Xcode Charles (HTTP-прокси) не фиксирует локальный трафик

Я пытаюсь проверить http (не SSL) трафик, используя XCode 6.1 и iOS Simulator 8.1, используя Charles и мой локальный сервер apache.

У меня Чарльз работает правильно, но он перехватывает трафик только тогда, когда я использую свой IP-адрес в локальной сети: 192.168.1.X в качестве целевого хоста для запросов в iOS.

Я попробовал другие предложения из статьи Чарльза здесь, но никто не работает, кроме IP-адреса локальной сети.

«Почему бы просто не использовать IP-адрес локальной сети?», спросите вы? Ну, я бы хотел избежать YASCE (еще одно исключение из системы контроля версий). Видите ли, мой исходный код имеет это в сетевом разделе:

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

Я бы не хотел, чтобы каждый разработчик в команде постоянно обращал особое внимание на то, чтобы не проверять свой личный IP-адрес каждый раз, когда они вступают в систему управления версиями.

Есть ли другой способ, которым я могу убедить симулятор iOS передать http://localhost через Чарльза, или есть лучший способ обрабатывать настройки, специфичные для среды, с помощью команды разработчиков?


person Albert Bori    schedule 26.11.2014    source источник


Ответы (4)


Используйте localhost.charlesproxy.com вместо localhost. Это настроено на DNS charlesproxy.com, чтобы указать на 127.0.0.1, и всегда будет. И поскольку это не буквально localhost, оно должно обходить встроенную логику ОС для localhost.

Также можно использовать local.charles, но только если Чарльз действительно работает и вы используете его в качестве прокси. Поэтому я предпочитаю решение localhost.charlesproxy.com.

Я тоже обновлю FAQ.

person Karl von Randow    schedule 25.01.2016
comment
Примечание. Не забудьте добавить localhost.charlesproxy.com к фильтру «Включить», если он включен в настройках записи. В противном случае запросы не будут отображаться. ›..‹ - person Albert Bori; 26.01.2016
comment
Я получаю сообщение об ошибке на localhost:3000 напрямую или через любой из этих адресов (local.charles:3000, localhost.charlesproxy.com:3000), когда charles запущен. Свежая установка Чарльза, OSX 10.11.4. Вместо этого я попытался использовать прокси-сервер SOCKS и получил ту же ошибку. Скриншот ошибки для всех трех адресов: s3.amazonaws.com /f.cl.ly/items/0b162j1v2A2O3O1X2C3o/ - person Jay; 10.05.2016

Я нашел приемлемый обходной путь. Это включает в себя редактирование файла hosts для создания псевдонима для локального хоста. Каждому разработчику придется делать это на своей машине разработки, но после этого все должно пройти гладко.

Запустите 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
person Albert Bori    schedule 24.06.2015

Я использую свое имя хоста вместо localhost. Чтобы получить имя хоста, просто введите hostname в терминале, а затем измените URL-адрес на "http://your-host-name".

person Evgenii    schedule 07.07.2015
comment
Это не приемлемое решение для этого вопроса. Это работает, но не мешает разработчикам указывать в коде адреса конечных точек в специальном регистре. - person Albert Bori; 08.07.2015

Та же проблема случилась со мной. Использование имени моего компьютера вместо «localhost» решило мою проблему и позволило отобразить его на Charles. Например, имя моего компьютера "sukwon", и я решил его, используя "http://sukwon.local" вместо используя "http://localhost"

person Sukwon    schedule 31.03.2015
comment
К сожалению, это не решает основной проблемы. Если вы работаете в команде из двух человек, маловероятно, что у них будет одинаковое имя компьютера. Тогда у вас будут постоянно возникать конфликты в вашем файле xcodeproj при использовании общего репозитория кода. - person Albert Bori; 03.04.2015