我正在运行一个强制门户网站,目标受众是移动的设备。我想在用户**通过CNA认证后为他打开一个“欢迎页面”。此页面应该在(移动的)Safari中打开,而不是在CNA中打开,因为它包含在有限的CNA环境中无法工作的交互式元素。
我以前在其他门户网站上看到过这种情况,但我不知道他们是如何做到这一点的,即使经过长时间的研究也无法弄清楚。
我*************************
- 强制门户/强制网络正在工作
- 连接的用户获得弹出窗口中显示的启动页面(CNA)
- 因为我不需要身份验证,它们在这一点上是连接的,右上角的按钮显示“OK”
我想要的是:
- 此启动页面上用于打开Safari窗口的链接或按钮
或
- 一些JavaScript,重定向,当CNA关闭时打开Safari窗口的其他任何东西。
到目前为止我还没有找到任何东西(例如)。using target="_system”was mentioned)works.有没有人知道这些酒店和其他门户网站是如何设法做到这一点的?
5条答案
按热度按时间4sup72z81#
您需要确保锚标记指向绝对URL而不是相对URL。例如你的链接应该是
如果链接是
还请注意,这将只在互联网可用/用户连接时,点击链接工作。在iOS CNA中,连接时右上角的按钮将变为“完成”。因此,当CNA的状态为
Done
时,单击绝对链接将关闭CNA并将在Safari中加载链接。q3aa05252#
您无法使操作系统(OS X或iOS)打开Safari。当 iOSX 检测到 * 围墙花园 *(强制门户)时,它会启动CNA。那是。
CNA ≠ Safari。让我们尝试
<a href="..." target="_blank">test</a>
任何尝试打开另一个CNA窗口失败。<a href="..." target="_system">test</a>
任何打开Safari的尝试都失败(_system仅适用于iOS应用程序中的Safari,Mail & Safari webviews)回答:不可能。
但我想知道有没有人已经 * 看到过这种现象。你有没有见过一个Safari页面自动启动后,已提出的CNA窗口?
nkcskrwz3#
iOS 11中引入了另一个错误,例如在Safari中打开链接后,CNA不会自行关闭。
请参阅此处的讨论:https://forums.developer.apple.com/thread/75498#221482
ht4b089n4#
秘诀是向iOS客户端发送一个HTML响应,其中包含一个只包含单词“Success”的
<body>
元素。iOS CNA(Captive Network Assistant)期望返回类似http://www.apple.com/library/test/success.html的内容。例如:
您可以使用JavaScript重定向iOS CNA窗口:
此外,您可以通过在
<body>
标记上使用style
属性将正文文本更改为白色来隐藏“Success”消息。iOS CNA应用程序似乎并没有寻找完全符合Applesuccess.html
的页面;它似乎只是在寻找一个包含单词“Success”的<body>
元素。我的用例
我正在使用的强制门户需要用户同意服务条款。移动终端将用其CNA检测强制门户,并打开具有强制门户登录页面的OS级浏览器窗口。
当用户单击“同意并连接”时,将显示一个艾德,该表单在强制门户设备上执行MAC授权。
Web服务器返回我自己的带有白色文本的
success.html
,JavaScript重定向到用户请求的URL(对于用户使用移动的浏览器手动浏览网站的情况)或品牌欢迎页面。TL;DR:
1.用户连接到强制网络门户
1.移动终端检测强制门户
1.移动的CNA加载强制门户登录页面
1.用户单击“同意并连接”,向执行身份验证的Web服务器发出
POST
请求success.html
的POST
URL返回的,它在<body>
元素之后包含一个JavScript重定向;这会触发iOS CNA Web视图检测是否已成功连接到网络welcome.html
u5rb5r595#
我设法让我的iOS 9.1设备通过执行以下操作在mikrotik环境中重定向:
更改alogin.html页面(您的连接页面),使其标题为connected,正文为connected,如下所示:
在较新的设备10.3.1上,这似乎不再起作用,目前正在测试它的变体。https://forums.developer.apple.com/thread/75498