Pour mon processus de développement, je dois accéder à un serveur Web situé derrière un VPN et ne disposant d'aucune entrée DNS. Ce que je faisais sur 4.x était d’éditer/etc/hosts sur l’iPhone et de l’ajouter au fichier hosts.
Maintenant, je suis sur la version bêta 5.0, et je ne veux pas jailbreaker pour l'instant juste pour cela.
Est-il possible d'ajouter une ligne à/etc/hosts, uniquement à des fins de développement (l'application finale, la distribution n'a pas besoin de ce hack), sans jailbreaker? Puis-je utiliser d'autres moyens (par exemple, déclarer une fausse entrée DNS par un moyen inconnu au lancement de l'application)?
Configurez une entrée DNS réelle, soit en configurant un serveur DNS local sur votre réseau sans fil, soit en utilisant un service DNS dynamique, soit en ajoutant un enregistrement A à un domaine pour lequel vous contrôlez DNS.
EDIT: Si vous souhaitez acheter une petite licence, je vous recommande d’utiliser Charles Proxy , un outil proxy de débogage Web. Il résoudra également les domaines de votre/etc/hosts local et donnera de nombreuses fonctionnalités supplémentaires (par exemple, inspecter les demandes/réponses et limiter la vitesse du réseau). Je ne suis tombé sur cet outil que dans une vidéo de la WWDC et je ne suis pas affilié à ce produit. Je recommande de lire le tutoriel de Chris Ching pour iPhone et Charles Proxy pour vous aider à démarrer.
Pour ajouter à la réponse de Ramon , vous pouvez configurer votre ordinateur local en tant que serveur DNS et que votre iPhone pointe sur votre ordinateur en tant que serveur DNS. Cela fonctionnerait aussi pour les appareils Android
brew install dnsmasq
dnsmasq
est un serveur DNS léger qui se replie sur le serveur DNS d'origine lorsqu'il rencontre un domaine inconnu.address=/.your.domain.com/10.0.0.5
au fichier /usr/local/etc/dnsmasq.conf10.0.0.5
correspond à l'adresse IP attribuée à votre ordinateur local par votre routeur. Vous pouvez le trouver via Network Utility
(si vous voulez être chic, vous pouvez attribuer une adresse IP statique à votre ordinateur local de votre routeur).Sudo dnsmasq
dnsmasq
remplira les entrées inconnues à travers les autres serveurs DNS connus. Sans l'entrée du routeur, vous êtes un périphérique dnsmasq
qui ne sait pas comment se connecter à Internet.dnsmasq
examinera votre/etc/hosts. Ainsi, si vous aviez défini your.domain.com
sur 127.0.0.1
, votre iPhone résoudra your.domain.com
en 127.0.0.1
, ce qui signifie que vous ne vous connecterez à rien. Pour changer ce comportement, éditez sans commenter la ligne #no-hosts
dans la configuration de Dnsmasq.Vous pouvez également configurer Dnsmasq (disponible à partir de macports/brew), il agit comme un redirecteur DNS qui vous permet de définir toutes sortes d’autres enregistrements.
Vous pouvez ensuite configurer le DNS sur l'iphone/ipad pour qu'il pointe vers la zone d'exécution de DNSmasq, et tout hôte situé sur/etc/hosts sur la zone dnsmasq sera renvoyé en premier. Si non trouvé, dnsmasq enverra la requête au DNS en amont.
Vous pouvez également ajouter des enregistrements SRV à dnsmasq.conf:
srv-Host=_sip._udp.devel.foo.com,devel.foo.com,5070
Et beaucoup d'autres subtilités.