我正在两台计算机上测试ASP.NET 3.5应用程序:一台是Windows 7 x64,另一台是Windows Server 2008 x64。
当我使用相同的Chrome实例打开这两台计算机上的网站时,HttpBrowserCapabilities.Browser
会得到不同的结果:在Windows 7计算机上我得到browser.Name = "appleMac-safari"
,而在Windows Server计算机上我得到browser.Name = "applewebkit"
。
两台机器都安装了相同的(AFAIK)asp.net应用程序,相同的machine.config
文件,而*.browser
文件在C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\Browsers
上也是相同的
为什么会出现这种差异?
答案 0 :(得分:1)
使用以下方法检测Chrome,因为它更可靠
if (Request.UserAgent.Contains("Chrome"))
{
....
}
UserAgent值为:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16
答案 1 :(得分:0)
我会查看浏览器发送的用户代理字符串。很可能,用户代理字符串在这两个平台上的chrome版本中不一样。有很多不同之处。
此外,我想补充一点,在大多数情况下,服务器端浏览器嗅探的用途非常有限,因为正如您所见,它不是特别可靠并且可以轻易伪造。如果您希望以不同方式设置样式或调整某些客户端行为,使用Modernizr之类的javascript包进行特征检测是一种更加强大的方法。