IISExpress上的错误用户代理WP8.1


Wrong user agent WP8.1 on IISExpress

我有以下情况:

  • 我正在使用Webmatrix 3(内部使用IISExpress)托管本地服务器,PHP 5.5
  • 我打开了Webmatrix以通过以下方式提供外部(即在LAN中)流量
    • 命令提示符netsh http add urlacl url=http://mycomputername...:8080/ user='Jeder(德语中的每个人)
    • 将本地主机绑定到 applicationhost.config 中的 mycomputername <binding protocol="http" bindingInformation="*:8080:mycomputername" />
    • 在防火墙中打开端口 8080 的传入请求
  • 我已经在我的本地服务器上安装了Kirby CMS,我可以在LAN内使用WP8.1 Lumia 1020和Nexus 5联系。访问管理面板时,我在 Lumia 上的 IE 上收到 http 500 错误,而不是在 Nexus 上。

我通过<?php echo $_SERVER['HTTP_USER_AGENT'];?>检查了用户代理,结果是 Nexus 5 的字符串正确,但 Lumia 的字符串不正确。在外部 UA 检查器上,Lumia 正确返回"Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; tv:11.0; IEMobile/11.0; NOKIA; 909) like Gecko"

但在当地,卢米亚Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; 909)回来了。

例如,这也记录在IIS-Logfiles(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可能在内部使用我们从桌面IE知道的一些兼容性模式。但为什么只为这个本地网站呢?

长话短说,为什么IEMobile/WP8.1发送不正确的用户代理字符串?这是因为一个奇怪的IISExpress PHP5.5安装,导致错误检测吗?还是WP8.1总是向本地Webmatrix站点发送虚假ua?或者这是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>