我正在运行强制网络门户,目标受众只是移动设备。我想打开一个欢迎页面"用户在后在CNA中进行身份验证。此页面应该在(移动)Safari中打开,而不是在CNA中打开,因为它包含在有限的CNA环境中无法工作的交互式元素。
我以前见过这个在其他门户网站工作过,但我不知道他们是怎么做的,经过长时间的研究后也无法弄明白。
我拥有的是:
我想要的是:
或
到目前为止我找不到任何内容(例如使用target =" _system"被提及)。有谁知道这些酒店和其他门户以某种方式设法做到了,做到了吗?
答案 0 :(得分:5)
您无法使操作系统(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网页浏览)
对我来说:回答=不可能。
但我想知道:是否有人已经看到这种现象。你有没有看过在出现CNA窗口后自动启动的野生动物园页面?
答案 1 :(得分:3)
iOS 11中引入了另一个错误,即在Safari中打开链接后CNA不会自行关闭。
请参阅此处的讨论:https://forums.developer.apple.com/thread/75498#221482
答案 2 :(得分:2)
秘诀是向iOS客户端发送HTML响应,其中BODY元素仅包含单词&#34; Success&#34;。 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>
此外,您可以隐藏&#34;成功&#34;通过在BODY标记上使用STYLE属性将正文文本更改为白色来显示消息。 iOS CNA应用程序似乎没有找到完全符合Apple的success.html的页面。 似乎正在寻找包含单词&#34;成功&#34;。
的BODY元素。我使用的强制网络门户要求用户同意服务条款。移动设备将使用其CNA(Captive Network Assistant)检测强制网络门户,并使用强制网络门户登录页面打开操作系统级别的浏览器窗口。
当用户点击&#34;同意&amp;连接&#34;表单是POSTed,它在强制网关设备上执行其MAC的授权。
网络服务器返回我自己的success.html,其中包含白色文本,javascript重定向到 用户请求的网址(对于用户使用移动设备手动浏览网站的情况)浏览器)或品牌欢迎页面。
用户连接到强制网络门户
移动设备检测到强制网络门户
移动CNA加载强制网络门户登录页面
用户点击&#34;同意&amp;连接&#34;,向执行身份验证的网络服务器发出POST请求
从指向我的网络服务器上的success.html的POST网址返回HTTP 302重定向,其中包含BODY元素之后的javscript重定向这会触发iOS CNA Web视图以检测它是否已成功连接到网络
CNA登录窗口被重定向到我的品牌welcome.html
CNA webview窗口在Android中自动关闭,或者用户可以点击&#34;完成&#34;在iOS CNA webview窗口中关闭它
答案 3 :(得分:2)
通过执行以下操作,我设法让我的iOS 9.1设备在mikrotik环境中重定向:
将alogin.html页面(您的已连接页面)更改为已连接的标题和连接的主体,如下所示:
<html>
<head>
<title>Success</title>
</head>
<body>
Success
<script>
function addElement(absoluteurl)
{
var anchor = document.createElement('a');
anchor.href = absoluteurl;
window.document.body.insertBefore(anchor, window.document.body.firstChild);
setTimeout(function(){ anchor.click(); }, 1000);
// document.body.appendChild(elemDiv); // appends last of that element
}
addElement("http://www.google.com");
</script>
</body>
在较新的设备10.3.1上,这似乎不再有效,目前正在测试它的变体。 https://forums.developer.apple.com/thread/75498
答案 4 :(得分:1)
您需要确保锚标记指向绝对URL而不是相对URL。例如,你的链接应该是
<a href="http://yourdomain.com/home.html">Home</a>
如果链接
,则不会中断<a href="/home.html">Home</a>
另请注意,只有在点击链接时可以使用互联网/用户连接时,此功能才有效。在iOS CNA中,右上角的按钮将变为“完成”按钮。连接时因此,当CNA的状态为Done
时,基本上单击绝对链接将关闭CNA并将在Safari中加载链接。