基于http请求检测Web应用程序中的移动浏览器的标准方法
我们开始沿着对企业电子商务Web应用程序(基于Java / Servlet)的移动浏览器支持的道路前进。当然,有许多决定需要做出,但是在我看来,基石是能够可靠地检测移动浏览器,并做出相应决定要返回的内容的决定。有没有一种基于HTTP请求(快速)进行确定的标准方法,理想情况下,该方法可以收集有关发出请求的给定浏览器和设备的更多信息(屏幕大小,html功能等)。
我也将不胜感激那些曾经采用现有大型企业Web应用程序并从开发方面设计出移动浏览器支持的人所提供的任何补充信息。
[edit]我当然理解请求标头,并且有关标准用户代理数据库的信息是一个很大的帮助。对于那些谈论"其他"请求标头属性的人,如果我们可以包括类似的标准化名称/值资源,那将是一个很大的帮助。
[edit]几个用户已经提出了解决方案,其中涉及通过有线调用将进行检测的某些Web服务。虽然我敢肯定这是可行的,但对于企业电子商务网站而言,它不是一个好的解决方案,其原因有两个:1)速度。对于向第三方的每个页面请求,通过电线进行的呼叫都将对性能产生巨大影响。 2)依存关系/合法。我们会将网站的响应时间和关键功能与他们的服务联系在一起,由于法律和风险原因,这太可怕了。
解决方案
标准方法不是检查用户代理吗?这是可用于检测移动浏览器的用户代理数据库。
我们将必须使用先前定义的列表来检查用户代理字符串,例如这样的列表
这篇文章(及其后续文章)看起来不错。
我们将从请求标头中获得大多数信息,例如浏览器,设备,可接受的语言,可接受的格式等。上面提到的用户代理是请求标头的一部分。
尽管我们可以通过用户代理检测到移动浏览器,但PC平台上的浏览器之战表明,嗅探用户代理并不是一件好事。
理想情况下,应该基于媒体类型应用特定样式,或者应根据用户代理以外的标头(例如,Accept-header)发送不同的答案,该标头告诉浏览器喜欢哪种内容。
目前,通过浏览器嗅探来编码可与iPhone和Opera一起使用的网站可能就足够了,但是Google的Android即将面市,而且还有许多其他手机的浏览器功能将在不久的将来接近iPhone。开发一个不完全支持那些设备的移动网站将是一种浪费。
@David的答案是使用WURFL提及的-这可能是最佳选择。但是,请注意,成功率通常约为60%(根据我和其他人的经验)。随着运营商不断更改UA以及现有的设备配置文件数量(60,000+?),没有防弹方法来获取所需的所有正确数据。
在严重依赖设备数据库之前,只需要一点警告。我会尝试通过允许用户更改会话选项来保持用户的选项打开,以防万一我猜错了。
我们可以使用网络服务来检测手机浏览,例如phonedetection.com。
我提出了一个基于uaprof和用户代理的免费检测系统:
http://www.mobilemultimedia.be
UAprof可用时,应该将其作为检测的主键,因为同一uaprof通常有多个用户代理。如果我们想自己管理它,那么应该去Wurfl,因为我们可以下载整个数据库并自己在本地进行管理。
事实是,仅依靠useragent不足以检测移动浏览器。
当然,几年前,我们可以搜索某些字符串,然后猜测它是诺基亚之类的东西,但是现在有那么多手机,并且假装很多东西,以至于它们不需要更复杂的东西。
我在链接文本中找到了一个不错的网站,该网站基于MTV用于其所有移动网站的相同解决方案。它非常好,因为它具有与设备无关的标记语言,但更重要的是,它们为isMobileDevice()提供了Web服务调用。
只需看手册,然后看"它是如何工作的"。
我一直在将其用于客户网站,但尚未找到无法准确检测到的移动浏览器。完全致盲!
最近,当我有类似的需求时,我发现此代码使用HTTP_X_WAP_PROFILE,HTTP_ACCEPT和HTTP_USER_AGENT将浏览器标识为移动或者非移动浏览器。它是PHP,但是可以很容易地转换成我们需要的任何东西(我在VBScript中为经典ASP实现了它)。
具有讽刺意味的是,事实证明我并没有最终使用该代码,因为我们决定为移动和非移动用户提供特定的URL,但是当我对其进行测试时,它肯定可以工作……
在寻找正确的检测移动设备方法的几天之后,我决定保持它简单[愚蠢],我将在索引页面上放置一个"移动设备站点"按钮...。只需单击一下即可!
我们可以使用Modernizer检测浏览器功能
只需通过以下内容在移动网络上运行设备和功能检测:
- 使用设备和功能检测来改善移动网络上的用户体验
- 设备检测简介
- 提供通用的移动网站
- 在设计时考虑到移动性和适应性
- 内容改编
- 首先将适应需求降到最低
- 客户端适应
- 服务器端用户代理(UA)和标头查找
- 服务器端UA字符串与设备数据库查找结合
- 服务器端用户代理配置文件(UAProf)检测
- 基于JavaScript技术的检测
- CSS媒体类型
- CSS媒体查询
- 着陆页+手动链接
- 可下载的样本页面