Кто-нибудь знает, почему php и jscript выводят разные пользовательские агенты?
А также, какой из них правильный?
PHP
<?php print_r($_SERVER['HTTP_USER_AGENT']); ?>
Выход: Mozilla/5.0 (Mobile, Windows Phone 8.1, Android 4.0, ARM, Trident/7.0, Touch, rv: 11.0, IEMobile/11.0, Microsoft, Lumia535), как iPhone OS7_0_3 Mac OS X AppleWebKit/537 (KHTML, как и Gecko) Mobile Safari/537)
JScript
alert(navigator.userAgent);
Выход: Mozilla/5.0 (совместимо; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Microsoft; Lumia 535;
На нашем портале мы обнаруживаем вызывающее устройство через UAS. Я обнаружил некоторые проблемы с строкой пользовательского агента WP 8.1. Для WP с IE, настроенного на мобильный через Интернет, я получаю "осмысленный" UAS:
Mozilla/5.0 (Mobile, Windows Phone 8.1, Android 4.0, ARM, Trident/7.0, Touch, rv: 11.0, IEMobile/11.0, NOKIA, Lumia 930), как iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, как и Gecko) Мобильный Safari/537
Таким образом, если IE mobile установлен на "Рабочий стол" или портал вызывается через Интранет, я получаю:
Mozilla/5.0 (Windows NT 6.2, ARM; Trident/7.0; Touch; rv: 11.0; WPDesktop; Lumia 930), как Gecko
Итак, эффект был в том, что наш портал показал мобильную страницу iOS, а не мобильную страницу WP. Обходной путь состоял в том, чтобы запросить UAS для "Windows Phone" перед запросом для iPhone. Похоже, что MS пытается найти это мобильное устройство (если только страницы запрашивают для iOS и Android-устройств), что не приятно.
Поэтому нет "одного" правильного UAC, вам нужно поддерживать более одного...