2010-01-08 3 views
87

Я разрабатываю приложение, которое запрашивает сервер. На моем Mac я использую файл hosts для изменения dns, чтобы указать на локальный сервер в моей локальной сети.Есть ли файл hosts на iPhone? Как его изменить?

Теперь мне нужно проверить его на моем iPhone, проблема в том, что мой iPhone не распознает этот сервер из-за отсутствия конфигурации для DNS.

На моем Mac или Windows я просто добавляю файл 192.168.0.20 http://www.google.com в файл hosts.

Теперь, как я могу сообщить своему iPhone об этом URL-адресе: http://www.google.com?

+0

Побег из тюрьмы на ваш iPhone, скачайте iFile, перейдите в '/ etc /' и откройте файл под названием 'hosts' в средстве просмотра текста. Теперь вы можете отредактировать его. –

+0

Локальное развитие на iPhone с OSX и веб-прокси Чарльзом http://deployfx.com/2011/08/local-development-on-iphone-with-osx-and-charles-web-proxy/ – jfroom

+1

OSX iOS Simulator и обновление ваш файл/etc/hosts. – dmarvasti

ответ

34

Это не прямо ответить на ваш вопрос, но это не решает проблему ...

Что делают маршрутизатор у вас есть? Прошивка вашего маршрутизатора может позволить вам установить записи DNS для вашей локальной сети. Это то, что я делаю с Tomato firmware

+0

спасибо, это это то, что я сделал для решения проблемы;) –

+0

Я тоже использовал этот подход, за исключением того, что я использую pfsense. – codewise

+0

как это будет работать, у меня тоже есть такая же проблема, я нахожусь на cisco wrt router – Amitg2k12

30

Не связано с программированием, но я все равно отвечу. Он находится в /etc/hosts.

Вы можете изменить его простым текстовым редактором, таким как nano.

(Очевидно, что вам нужно будет взломанный Iphone для этого)

+3

Вы не можете использовать nano на iphone vanilla, чтобы напрямую добраться до/etc/hosts. Я бы предположил, что это приложение, которое будет распространено, и в этом случае вы не можете общаться с файлами вне вашей песочницы. – Jaanus

+0

@Jaanus: Конечно, я имел в виду взломанный iphone.И он никогда ничего не говорил о перераспределении приложения; он просто упомянул, что ему нужно было проверить его на своем iphone, у которого была проблема с DNS. –

+12

Я не понимаю нисходящие точки. Ответ технически правильный и хорошо написан. –

6

Это может существовать, но вы не можете изменить его на не джейлбрейка iPhone.

Предполагая, что ваш веб-сервер разработки находится на Mac, почему бы вам просто не использовать его имя Bonjour (например, MyMac.local.) вместо myrealwebserverontheinternet.com?

+0

, все веб-службы существуют на сервере в моей локальной сети. У меня есть доменное имя, и я бы хотел отобразить свое доменное имя на этом сервере. и не зная, что кто-то дает вам адрес для всех своих веб-сервисов, он просит вас запросить эти службы, используя этот адрес, он может показать вам, как добавлять файлы hosts в mac, windows, но не iphone: -s –

0

Нет, приложение для iPhone может только изменить материал в своей маленькой песочнице. (И даже там есть вещи, которые вы не можете изменить «на лету».)

Ваш лучший выбор - вероятно, использовать IP-адрес серверов, а не имя хоста. Чуть сложнее, но не , что сложно, если вам просто нужно решить один адрес, нужно было бы поставить DNS-сервер на свой Mac и настроить iPhone для использования.

3

Не меняйте DNS на телефоне. Вместо этого подключитесь к Wi-Fi в локальной сети, и все настроено.

В моем офисе у нас есть внутренние серверы с внутренним DNS, которые не подвергаются воздействию Интернета. Я просто подключаюсь с iPhone к Wi-Fi офиса и могу получить к ним доступ в порядке.

YMMV, но вместо того, чтобы настраивать DNS-телефон, мне кажется, что просто настройка локального внутреннего DNS и Wi-Fi является более простым и простым решением.

12

Я только что отредактировал файл «хостов» моего iPhone (на Jailbroken iOS 4.0).

  • установлен OpenSSH на iPhone через Cydia
  • Использование клиента SFTP как FileZilla на моем компьютере, я подключен к моему iPhone
    • Адрес: [использовать IP-адрес вашего телефона или имя хоста , например.simophone.local]
    • Имя пользователя: root
    • Пароль: alpine
  • расположен файл /etc/hosts
  • Сделано в резервную копию на моем компьютере (в случае, если я хочу, чтобы вернуть свои изменения позже)
  • Отредактировал файл хозяев в достойном текстовом редакторе (например, Notepad++). См. here для объяснения файла hosts.
  • Выложены изменения, переписав файл хостов на iPhone

телефон делает кэш некоторых веб-страниц и DNS запросов, поэтому перезагрузка или очистка кэша может помочь. Надежда помогает кому-то.

Simon.

+2

Вы также можете использовать приложение iFile от Cydia для редактирования файла hosts на своем устройстве без использования компьютера. Ad @ m – kirb

+1

@Simon Я выполнил те же шаги, но это не сработало. Затем я попытался изменить настройки кодирования и получил его! Перед тем, как сохранить его, вам необходимо преобразовать файл хоста в ANSI в Notepad ++. Для кого не удалось получить файл хоста; нажмите «** Преобразовать в ANSI **» в меню «** Кодирование **». – trkaplan

+2

.. И измените пароль по умолчанию из альпийского на другое! – Tieme

70

Другой вариант здесь - подключить ваш iPhone через прокси. Вот пример того, как сделать это с Fiddler (это очень просто):

http://conceptdev.blogspot.com/2009/01/monitoring-iphone-web-traffic-with.html

В этом случае любой поиск DNS ваш iPhone действительно будет использовать хост файл машины Скрипач работает. Примечание, однако, вы должны использовать имя, которое будет разрешено через DNS. example.local, например, не будет работать. example.xyz или example.dev будет.

+3

Это простейшее решение. Я должен был подумать об этом! – jimplode

+1

Awesome. Это помогло мне! – Sniffer

+1

То же самое отлично работает в osx, настройте прокси-сервер HTTP в настройках сети. Http://i.imgur.com/h5zEm.png – antonj

5

В случае кто-либо попадает на эту страницу, вы можете решить эту проблему, используя адрес Ip ​​в запросе URL вместо домена:

NSURL *myURL = [NSURL URLWithString:@"http://10.0.0.2/mypage.php"]; 

Затем указать хост вручную:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:myURL]; 
[request setAllHTTPHeaderFields:[NSDictionary dictionaryWithObjectAndKeys:@"myserver",@"Host"]]; 

Что касается сервера, он будет вести себя точно так же, как если бы вы использовали http://myserver/mypage.php, за исключением того, что iPhone не придется выполнять поиск DNS.

100% Открытый API.

+2

Однако это будет работать только для первого запроса, если mypage.php выполнит любой другой запрос на myserver, тогда приложение не будет выполнять преобразование. – htafoya

+0

Этот подход хорош, если вы не собираетесь использовать cookie. – DUzun

+0

Nah. Это тоже не сработало. Мы используем SSL-шифрование, поэтому несоответствие домена испортило его: '017-07-13 10: 21: 42.244723-0400 ApperName [1015: 449748] libMobileGestalt MobileGestaltSupport.m: 153: pid 1015 (ApperName) не имеет доступ к песочнице для frZQaeyWLUvLjeuEK43hmg и не имеет соответствующего права 2017-07-13 10: 21: 42.244886-0400 UnionBank [1015: 449748] libMobileGestalt MobileGestalt.c: 550: нет доступа к InverseDeviceID (см. ) ' – codeslapper