Назад | Перейти на главную страницу

Невыпадающий портал / обнесенный стеной сад во всплывающем окне на Android не появляется

Обычно я не прошу помощи, но я застрял на этом пару дней - и любые подсказки, которые могут быть у кого-то, будут очень признательны.

Я создал точку доступа Wi-Fi (скрытый портал / огороженный сад) - используя Windows Server 2012, Unbound DNS и маршрутизатор Apple Extreme. У меня работает IIS, который заботится о перенаправлениях с помощью перезаписчика URL-адресов, и все это хорошо для устройств iOS.

Я пытаюсь заставить устройства Android отображать всплывающее окно CNA, когда они присоединяются к сети Wi-Fi. Я делаю это по этому правилу в своем web.config

            <rule name="android rule" enabled="true" stopProcessing="false">
                <match url="(.*)generate_204(.*)" />
                <!-- <action type="Redirect" url="http://supplierfinder.ubm-com.net/WebPage.cshtml" appendQueryString="false" redirectType="Temporary" /> -->
                <action type="Rewrite" url="WebPage.cshtml" appendQueryString="false" />
            </rule>

Я уверен, что это перенаправление работает и обслуживает страницу, когда устройство подключается к сети. Вот запись в журнале

2015-09-05 19:06:48 W3SVC2 WIN-8CHVURO21ID 10.0.1.2 GET / generate_204 - 80 - 10.0.1.12 HTTP / 1.1 Dalvik / 1.6.0 + (Linux; + U; + Android + 4.4.2; + GT -N7100 + Build / KOT49H) - - clients3.google.com 200 0 0 4143

как видите - получаю андроид http://client32.google.com/generate_204 входящий запрос - и я отвечаю перезаписью URL-адреса на действительную страницу (которая обслуживается) 200. Я ожидал, что устройство Android выполнит запрос еще раз, а затем откроет браузер и отобразит страница. Этого не бывает.

Я просмотрел исходный код Android для огороженных садовых соединений, и, насколько я могу судить, то, что я возвращаю, выглядит верным (ниже - исходный код из ОС Android - обратите внимание на логику 204).

        urlConnection.setReadTimeout(WALLED_GARDEN_SOCKET_TIMEOUT_MS);
         urlConnection.setUseCaches(false);
         urlConnection.getInputStream();
         // We got a valid response, but not from the real google

         return urlConnection.getResponseCode() != 204;
     } catch (IOException e) {
         if (DBG) {
             log("Walled garden check - probably not a portal: exception " + e);
         }

         return false;

     } finally {
         if (urlConnection != null) {

             urlConnection.disconnect();
         }
     }

Будем очень признательны за любые указания на то, что я делаю неправильно.

Настроить

Windows Server 2012 - использование несвязанного DNS, IIS 8.5 с расширениями URL Rewrite (http на порту 80 включен) DHCP-сервер на маршрутизаторе Airport Extreme (так как я не могу его отключить)

Мой DNS выглядит так

интерфейс: 0.0.0.0

контроль доступа: 10.0.0.0/8 разрешить

local-zone: "." redirect
local-data: ". A 10.0.1.2"

На данный момент я застрял - поиск исправления в google был немного бесплодным, поскольку все делают собственные порталы со сторонними продуктами - я начинаю думать, что мне следовало также принять этот подход :)

Спасибо за чтение ... ура

Стив