WiFiキャプティブポータルを手動で実装しています。ほぼすべてが機能していますが、1つの問題があります。モバイルOS(またはコンピュータOS)のキャプティブポータルポップアップを見て、完璧なエクスペリエンスを実現してください。
それぞれに独自のねじれた方法があるため、一貫したクロスプラットフォームのエクスペリエンスを得ることができないようです。
これを実現するために、(1)ログインページにリダイレクトする必要があるWiFiクライアントからのURLリクエスト、および/または(2)WiFiをリダイレクトするために使用できるnginxまたはApache Webサーバー構成ログインページへのクライアント?
この例のキャプティブポータルのログインページは http://captiveportal.lan です。これを解決しようとしているオペレーティングシステムの一部を以下に示します。
Android 4/5/6
RedirectMatch 302 /generate_204 http://captiveportal.lan
_前のAndroidバージョン
iOS 8
Apache .htaccess:
_RewriteEngine on
_RewriteCond %{HTTP_USER_AGENT} ^CaptiveNetworkSupport(.*)$ [NC]
RewriteRule ^(.*)$ http://captiveportal.lan [L,R=302]
nginx:?
以前のiOSバージョン
Windows Phone
RedirectMatch 302 /ncsi.txt http://captiveportal.lan
_
Windows 7\8\10
Mac OS
Amazon Kindle-ポップアップはありますか?
すべてのモバイルOSは、Webページをチェックして、キャプティブポータルの背後にあるかどうかを判断します。
メカニズムはこれです:
また、iOSの場合、アクセスのないドメインレスネットワークがホームネットワークであると想定し、キャプティブポータルではなくネットワークなしとマークするだけなので、WiFiネットワーク用のドメインが必要です。
次のURLをHTTP Successでキャプティブポータルに明示的にリダイレクトするようにしてください。
Android/Chromebook:
iOS 6:
iOS 7:
iOS 8/9:
ウィンドウズ
上記のURLメソッドほど一般的ではありませんが、多くのベンダーもユーザーエージェント「CaptiveNetworkSupport」の使用を開始しています。そのUAを確認し、常にポータルページを提供するだけですが、100%機能しません。
私はURLメソッドを使用しており、問題なく動作しています。
Amazon Kindle(Fire)
Amazon Kindle(Fire)は次のリクエストを行い、それが取得できない場合、「...ユーザーがログインする必要があると想定し、ログイン画面を表示します。」:
iOS 8.4
最新のiOSでは、「-hotspot-detect.html」だけでなく、 http://captive.Apple.com へのリクエストのすべてのURIを一致させる必要がありました。
iOS 8.4クライアントは、ランダムに生成されたURI(例: "/xmqPyZUv/3r8jTjv8.html"および "/ 7exN0TV7q0COX0/eKlBU8baU2tape/fjXUzDHBdE6W0O/BGbw7iYU2DVBh1/sVBtxドメインのURLから次のURLへのキャプション:" html "から" URL "へのリクエストを作成しています。