J'implémente manuellement un portail captif WiFi. J'ai tout fonctionne à peu près MAIS un seul problème: je veux que tout le monde voit le portail captif de leur système d'exploitation mobile (ou système d'exploitation d'ordinateur) pour une expérience sans faille.
Étant donné que chacun d'eux a sa propre façon de le faire, je suis apparemment incapable d'obtenir une expérience multiplateforme cohérente.
Pour ce faire, puis-je avoir de l'aide pour décrire (1) quelles demandes d'URL des clients WiFi doivent être redirigées vers une page de connexion, et / ou (2) quelle configuration de serveur Web nginx ou apache peut être utilisée pour rediriger le WiFi clients à une page de connexion?
Ma page de connexion au portail captif dans cet exemple est http: //captiveportal.lan . Voici certains des systèmes d'exploitation pour lesquels j'essaie de résoudre ce problème.
Android 4/5/6
- Apache:
RedirectMatch 302 /generate_204 http://captiveportal.lan
- nginx:?
Versions Android précédentes
- Apache:?
- nginx:?
iOS 8
Apache .htaccess:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^CaptiveNetworkSupport(.*)$ [NC]
RewriteRule ^(.*)$ http://captiveportal.lan [L,R=302]
nginx:?
Versions iOS précédentes
- Apache:?
- nginx:?
Téléphone Windows
- Apache:
RedirectMatch 302 /ncsi.txt http://captiveportal.lan
- nginx:?
Windows 7 \ 8 \ 10
- Apache: voir windows phone (fonctionne sur win7).
- nginx:?
Mac OS
- Apache:?
- nginx:?
Amazon Kindle - a-t-il une fenêtre contextuelle?
- Apache:?
- nginx:?
la source
Réponses:
Tous les OS mobiles vérifient simplement une page Web pour décider s'ils se trouvent derrière un portail captif ou non.
Le mécanisme est le suivant:
De plus, pour iOS, vous devez avoir un domaine pour votre réseau WiFi car il suppose qu'un réseau sans domeless sans accès est un réseau domestique et le marque simplement comme No Network au lieu de Captive Portal.
Assurez-vous simplement de rediriger explicitement les URL suivantes vers votre portail captif avec HTTP Success:
Android / Chromebook:
iOS 6:
IOS 7:
iOS 8/9:
les fenêtres
De nombreux fournisseurs ont également commencé à utiliser l'agent utilisateur "CaptiveNetworkSupport", bien qu'il ne soit pas aussi courant que la méthode URL ci-dessus. Vérifiez simplement cet UA et donnez-lui toujours votre page de portail ... ne fonctionne pas à 100% cependant.
J'utilise la méthode URL et ça fonctionne bien.
la source
Amazon Kindle (Fire)
Le Kindle d'Amazon (Fire) fait la demande suivante, et s'il ne peut pas être récupéré "... il suppose que l'utilisateur doit se connecter et ouvre un écran de connexion.":
iOS 8.4
Pour le dernier iOS, je devais faire correspondre tous les URI pour les demandes à http://captive.apple.com - pas seulement "/hotspot-detect.html".
Les clients iOS 8.4 effectuent des requêtes avec des URI générés de manière aléatoire (par exemple, "/xmqPyZUv/3r8jTjv8.html" et "/7exN0TV7q0COX0/eKlBU8baU2tape/fjXUzDHBdE6W0O/BGbw7iYU2DVBhic/YVtml") pour les requêtes URL à envoyer:
la source