秘诀是向 iOS 客户端发送一个 HTML 响应,其中的 BODY 元素只包含单词“Success”。iOS CNA 期望返回类似http://www.apple.com/library/test/success.html的内容。
例如:成功成功
您可以使用 javascript 重定向 iOS CNA 窗口:
<script type="text/javascript">
window.location.href = "yourdomain.com/welcome.html";
</script>
此外,您可以通过在 BODY 标记上使用 STYLE 属性将正文文本更改为白色来隐藏“成功”消息。iOS CNA 应用程序似乎并没有寻找完全符合Apple 的success.html 的页面。它似乎在寻找包含“成功”一词的 BODY 元素。
我的用例
我使用的强制门户要求用户同意服务条款。移动设备将使用其 CNA(强制网络助手)检测强制门户,并使用强制门户登录页面打开操作系统级浏览器窗口。
当用户单击“同意并连接”时,会发布一个表单,该表单在强制网络门户设备上执行他们的 MAC 授权。
网络服务器返回我自己的带有白色文本的 success.html,并且 javascript 重定向到用户请求的 URL(对于用户使用其移动浏览器手动浏览网站的情况)或品牌欢迎页面。
TL;博士:
用户连接到强制门户
移动设备检测到强制门户
移动 CNA 加载强制门户登录页面
用户单击“同意并连接”,向我的执行身份验证的网络服务器发出 POST 请求
HTTP 302 重定向从指向我的网络服务器上的 success.html 的 POST URL 返回,其中包含 BODY 元素后的 javscript 重定向这会触发 iOS CNA Web 视图以检测它已成功连接到网络
CNA 登录窗口被重定向到我的品牌welcome.html
CNA webview 窗口在 Android 中自动关闭,或者用户可以在 iOS CNA webview 窗口上单击“完成”将其关闭