У меня следующая ситуация:
netsh http add urlacl url=http://mycomputername...:8080/ user=\Jeder
(все на немецком языке)<binding protocol="http" bindingInformation="*:8080:mycomputername" />
Я проверил пользовательские агенты по <?php echo $_SERVER['HTTP_USER_AGENT'];?>
что приводит к правильной строке для Nexus 5, но не для Lumia. На внешний ua-checker Lumia возвращается корректно "Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; tv:11.0; IEMobile/11.0; NOKIA; 909) like Gecko"
,
Но локально Lumia возвращается Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; 909)
,
Это также регистрируется, например, в файлах журнала IIS (IISExpress / Logs / MyWebsite / ex150112.log)
#Software: Microsoft Internet Information Services 8.0
2015-01-12 23:28:22 ... POST /panel/login - 8080 - ... Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+Phone+OS+7.0;+Trident/3.1;+IEMobile/7.0;+NOKIA;+909) http://mycomputername:8080/panel/login 500 0 0 93
Я думаю, что IEMobile внутренне использует некоторый режим совместимости, который мы знаем из Desktop-IE. Но почему только для этого местного сайта?
Короче говоря, почему IEMobile / WP8.1 отправляет неверную строку user-agent? Это из-за странной установки IISExpress PHP5.5, которая приводит к ложному обнаружению? Или WP8.1 всегда отправляет false ua на локальный сайт Webmatrix? Или это ошибка в IEMobile?
И как можно поменять полученный ua на стороне сервера на правильный ua?
Я исправил это сам (источник: http://msdn.microsoft.com/de-de/cc817572.aspx)
Я просто добавил настраиваемый заголовок http для отключения wp8, чтобы выбрать режим совместимости для сайтов интрасети, используя следующую запись в файле web.config.
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-UA-Compatible" value="IE=EDGE" />
</customHeaders>
</httpProtocol>
</system.webServer>
Других решений пока нет …