119 votes

Comment puis-je rediriger les requêtes HTTP effectuées depuis un iPad ?

Puisque sur un iPad on ne peut pas modifier le fichier hosts (sans jailbreaking), comment peut-on rediriger arbitrairement le trafic web vers une autre url ?

C'est important pour le développement d'un site Web qui utilise une configuration d'hôte virtuel et pour lequel vous voulez rediriger vers une machine de développement.

(Ceci est lié à cette question : Puis-je modifier le fichier hôte d'un iPad ? )

89voto

tremoloqui Points 1544

La façon de contourner cette limitation de l'iPad est d'utiliser un serveur proxy HTTP, tel que Calamar sur une autre machine où vous pouvez éditer le fichier hosts.

Sur l'iPad, sous Réglages -> Réseau -> Wi-Fi -> (Votre réseau), il y a un paramètre Proxy HTTP qui peut être réglé sur manuel. Saisissez vos informations de proxy ici.

Une fois cette configuration mise en place, vous pourrez manipuler l'iPad comme si vous modifiiez le fichier hosts.

3 votes

Pour mémoire, je dirais qu'il est assez facile d'installer squid en utilisant macports "sudo port install squid".

1 votes

Ou yum install squid sur fedora

3 votes

Ou apt-get install squid sur Ubuntu

74voto

Stéphane Points 1358

J'ai trouvé il suffit de modifier les paramètres Wifi dans votre iPad pour utiliser l'adresse IP de votre machine de développement en tant que proxy HTTP (comme expliqué dans la section article précité ) :

enter image description here

De cette façon, il suffit de pouvoir accéder à votre application web sur votre iPad en entrant l'url de l'hôte virtuel (par ex. local.mywebapp.com ). C'est facile et rapide, mais contrairement à la solution de Will Koehler, vous ne pourrez toutefois pas accéder à Internet depuis l'iPad. Mais la plupart du temps, ce n'est pas vraiment un problème, puisque vous voulez simplement tester votre propre application.

2 votes

Excellente réponse. Si vous testez une application rails en utilisant Webrick, il suffit de définir l'adresse IP de votre machine de développement et le port 3000.

4 votes

Si vous utilisez Wamp ou uWamp sous Windows, réglez le port sur 80 .

10 votes

Qu'en est-il des cas comme le mien où votre application locale tire des données de diverses API sur le net ?

30voto

sagi Points 3157

Configurez le fichier hosts sur un ordinateur exécutant un serveur proxy tel que Fiddler ou Charles, et configurez l'iPad pour qu'il utilise cet ordinateur comme proxy HTTP.

Voici des instructions sur la manière de procéder avec Fiddler : http://conceptdev.blogspot.com/2009/01/monitoring-iphone-web-traffic-with.html

Et ceci est pour Charles : http://www.ravelrumba.com/blog/ipad-http-debugging/

0 votes

Merci d'avoir étoffé les options Windows/Mac.

2 votes

Pour nous, développeurs Windows, Fiddler est une excellente option, puisque la plupart des développeurs l'ont déjà installé.

0 votes

Une excellente alternative, gratuite et multiplateforme, consiste à utiliser tout simplement mitmproxy au lieu de Charles, mais la méthode du proxy est de loin le moyen le plus simple d'y parvenir si vous devez toujours être en mesure d'accéder à des ressources externes.

12voto

Manuel Razzari Points 51

Si vous avez déjà un Apache où vous faites du développement, vous pouvez facilement l'utiliser comme proxy de transfert. Ceci est particulièrement utile pour les sites WordPress, qui aiment vraiment utiliser l'URL absolue complète.

Ubuntu exemple ci-dessous :

La première étape consiste à modifier le /etc/hosts Ajoutez l'IP locale du serveur, pointant vers votre site.

127.0.0.1 dev.mysite.com

Ce fichier d'hôtes sera utilisé par votre proxy Apache lorsqu'il tentera de résoudre les requêtes provenant de votre iPhone / iPad. Configurons maintenant la partie Apache...

Vous devrez peut-être d'abord installer certains modules.

sudo apt-get install libapache2-mod-proxy-html
sudo a2enmod proxy proxy_http proxy_html
sudo apache2ctl graceful

Créez ensuite un fichier d'hôte virtuel, par exemple /etc/apache2/sites-available/my-proxy

Listen *:8080
<VirtualHost *:8080>
    ProxyRequests On

    <Proxy *>
        Order Deny,Allow
        Deny from all
        Allow from 192.168.1.0/24 
    </Proxy>
</VirtualHost>

Activez le serveur virtuel, et redémarrez Apache :

sudo a2ensite my-proxy
sudo apache2ctl graceful

Ensuite, allez sur Paramètres > Wi-Fi > Votre réseau et configurer un proxy "manuel". Entrez l'IP de votre serveur Apache, et le port. Et c'est tout !

Le site <Proxy *> Le blocage garantit que seules les personnes de mon réseau local peuvent utiliser ce proxy. Limitation stricte de l'accès est essentiel si vous utilisez un proxy de transfert. Le site ip2cidr sera utile à ce stade. (À titre de mesure supplémentaire, le port :8080 est bloqué par mon pare-feu).

9voto

Will Koehler Points 1002

J'ai besoin de tester les applications web que je développe sur un iPad. J'utilise Apache sur ma machine de développement pour exécuter les applications web, et la solution la plus simple que j'ai trouvée est d'utiliser Apache mod_proxy.

Ma machine de développement est visible sur mon réseau domestique sous le nom de saphir.local.

L'application web que je teste est hébergée sur la machine de développement à l'adresse demo.cms.dev (j'utilise POW).

Pour configurer le proxy, j'ai ajouté la section suivante à httpd.conf.

<VirtualHost *:80>
  ServerName sapphire.local
  ProxyPass / http://demo.cms.dev/
  ProxyPassReverse / http://demo.cms.dev/
  ProxyPassReverseCookieDomain .cms.dev .sapphire.local
  ProxyPreserveHost Off
</VirtualHost>

Ceci route les requêtes entrantes sur saphir.local vers demo.cms.dev. Cette méthode ne fonctionne que pour une seule application à la fois. Je pense que vous pourriez utiliser des ports différents pour configurer des applications supplémentaires. Peut-être que quelqu'un a une meilleure solution ?

0 votes

Cela m'a mis sur la bonne voie. Au départ, j'ai obtenu un message d'erreur "Aucun gestionnaire de protocole n'était valide pour l'URL". J'ai découvert que je devais charger à la fois proxy_module et proxy_http_module pour que cela fonctionne. Merci !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X