1

我在 Ubiquity Unifi 基础设施上创建了一个自定义强制门户(外部托管,使用 PHP 制作)。一切正常,除了:

Apple 设备(OSX、iOS)在连接时不会通过强制门户获得通常的弹出窗口。

我的雇主要求这样做。有任何想法吗?

4

1 回答 1

0

我根据以下问题解决了我自己的问题:https ://serverfault.com/questions/679393/captive-portal-popups-the-definitive-guide

iOS 和 OSX 设备向 URL 发出请求以检测强制门户。规则如下:

  1. 获取/发布http://foo.com/bar.html
  2. 如果 bar.html == [预期内容] > 打开 Internet
  3. 如果 bar.html != [预期内容] > 强制门户
  4. 如果 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。

希望这对其他人有帮助。

于 2017-05-11T19:32:20.573 回答