我在 Ubiquity Unifi 基础设施上创建了一个自定义强制门户(外部托管,使用 PHP 制作)。一切正常,除了:
Apple 设备(OSX、iOS)在连接时不会通过强制门户获得通常的弹出窗口。
我的雇主要求这样做。有任何想法吗?
我在 Ubiquity Unifi 基础设施上创建了一个自定义强制门户(外部托管,使用 PHP 制作)。一切正常,除了:
Apple 设备(OSX、iOS)在连接时不会通过强制门户获得通常的弹出窗口。
我的雇主要求这样做。有任何想法吗?
我根据以下问题解决了我自己的问题:https ://serverfault.com/questions/679393/captive-portal-popups-the-definitive-guide
iOS 和 OSX 设备向 URL 发出请求以检测强制门户。规则如下:
- 获取/发布http://foo.com/bar.html
- 如果 bar.html == [预期内容] > 打开 Internet
- 如果 bar.html != [预期内容] > 强制门户
- 如果 bar.html[status] != SUCCESS > No Network
但是,当他们第一次访问强制门户时,我使用 HTTP 标头重定向用户。这不属于上述任何规则,因此会阻止 Apple 设备检测到存在强制门户。
这是我的最终代码,它从热点提供的奇怪 URL 重定向到我的门户:
<?php
/* Trying to get Apple to show the WiFi popup */
if (!empty($_REQUEST['url']) && (strstr($_REQUEST['url'],'success.html') || strstr($_REQUEST['url'],'detect.html'))) {
echo '
Redirecting...
<script type="text/javascript">
window.location = "/index.html";
</script>';
exit;
}
header("Location:/index.html?". $_SERVER['QUERY_STRING']);
如您所见,Apple 设备需要查看一些实际内容,而不是重定向。
我还将 .php 文件扩展名重写为 .html。
希望这对其他人有帮助。