如何解决ASP.NET:不一致地检测到Chrome浏览器
| 我正在两台计算机上测试ASP.NET 3.5应用程序:一台是Windows 7 x64,另一台是Windows Server 2008 x64。 当我使用相同的Chrome实例在这2台计算机上打开网站时,在ѭ0上得到的结果是不同的:在Windows 7机器上,我得到的是browser.Name = \"appleMac-safari\"
,而在Windows Server机器上,我得到的是browser.Name = \"applewebkit\"
。
两台机器的asp.net应用程序安装相同(AFAIK),相同的machine.config
文件,而*.browser
文件在on5ѭ上也相同
任何想法为什么会出现这种差异?
解决方法
使用以下方法检测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
,我将查看浏览器正在发送的用户代理字符串。可能的是,在这两个平台上的那个版本的chrome中,用户代理字符串并不相同。有很多小的差异。
另外,我还要补充一点,在大多数情况下,服务器端浏览器嗅探的用途非常有限,因为如您所见,它并不是特别可靠,并且很容易伪造。如果您希望以不同的方式设置样式或调整某些客户端行为,则使用像Modernizr这样的javascript程序包进行特征检测是一种更可靠的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。