无论如何,如果HTTP请求来自移动浏览器,具有100%的准确性,是否在服务器端(例如在Servlet上)进行检测?仅通过检查有关HTTP_X_WAP_PROFILE,HEADER_HTTP_ACCEPT或UA的http标头是否可行?
编辑:请从您的答案中排除安全威胁,例如欺骗http请求。你不需要考虑到这一点。
由于
答案 0 :(得分:0)
常见的方法是检查用户代理字符串是否与以下正则表达式匹配:
/obile/
答案 1 :(得分:0)
如果您使用51Degrees的解决方案,则可以在Java servlet中检测服务器端移动设备。 51Degrees文档部分包含一个complete set of instructions,从设置新的servlet到将设备检测集成到现有的servlet中。
将设备检测集成到servlet中:
从sourceforge下载Java设备检测器。从存档中提取文件。将'dist'和'lib / webapp'目录中的JAR添加到项目中。添加导入:
import fiftyone.mobile.detection.webapp.BaseServlet;
更改
public class MyServlet extends HttpServlet {
要:
public class MyServlet extends BaseServlet {
现在,每个请求都会检测到设备,并且某些属性可用。要访问这些属性,请使用:
getProperty(request,"PropertyName");
其中“PropertyName”是您要检索的属性的名称,请求是HttpServletRequest。属性以字符串形式返回。可以在Property Dictionary页面上找到支持的属性的完整列表。但为了识别移动设备,您可以使用:
boolean isMobile = Boolean.parseBoolean(getProperty(request,"IsMobile"));
此特定解决方案的好处是在检测过程中不使用正则表达式。