iOS popup checker override Чтобы обойти проблему с iOS7 при обнаружении страницы входа на iPhone, можно проверить его специфический user agent и вернуть SUCCESS, чтобы iPhone не показывал всплывающее окно с логином. Это полезно в настройках, где используются Cookies. Поскольку всплывающее окно входа на iPhone не поддерживает Cookies, может понадобиться заставить пользователей открывать Safari для входа.
Для этого мы возвращаем “SUCCESS” только службе проверки страницы входа, а для тех, кто открывает Safari — показываем обычную страницу входа.
Вопрос: этот код нужно вставлять прямо в страницу входа хотспота? Сейчас мы используем альтернативный вариант с созданием списков wall garden, но иногда это не срабатывает. Большинство пользователей Apple всегда обновляют iOS до последних версий, поэтому подумал, что этот способ лучше, чем заморачиваться с кучей правил для wall garden, но не знаю, куда именно вставлять этот код.
Да, всё это должно быть частью HTML-файлов хотспота. RouterOS предварительно обрабатывает распознанные имена HTML-файлов («login.html» и т.д.) и передаёт браузеру уже обработанную версию.
Пожалуйста, подтвердите, что добавление этого в «rlogin.html» решает проблему. Я вижу, что у многих людей возникает эта ошибка, возможно, стоит уделить этому больше внимания.
Редактирую: Вижу, что это ведёт на страницу rlogin.html. Значит, мне всё ещё нужны правила walled garden или нет? У нас слишком много людей, которым приходится проходить перенаправление через Safari, чтобы это работало, и ещё постоянно говорят, что страница входа появляется, когда их iPhone выходит из режима сна…
Согласен, я даже пытался «подкорректировать» кое-что... смотрите код ниже, задал статические DNS, добавил пару записей в WalledG. Работает лучше, чем раньше, но каждый проклятый iOS телефон и версия делают, что хотят, и мы остаёмся в тупиковом, непредсказуемом положении. $(if user-agent == CaptiveNetworkSupport) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML> $(elseif user-agent == 'CaptiveNetworkSupport') <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML> $(elseif user-agent == 'CaptiveNetworkSupport/1.0 wispr') <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML> $(else) $(if http-status == 302)Требуется вход в Hotspot$(endif) $(if http-header == "Location")$(link-redirect)$(endif) ..CUT.. $(endif)
Хорошо, попробую разобраться. Но мой главный вопрос по поводу этого кода rlogin.html — будет ли он автоматически запускать каптив-портал или нет? Или пользователю всё равно придётся переходить на открытый http-сайт?