Java面试题大全
网站后台如何判断客户端是来自手机、还是来自电脑?

在浏览器打开一个网址时,此时浏览器为客户端,你的网站后台tomcat为服务器,客户端向服务器传了一个HTTP请求。

在HTTP请求的头部,有一个字段 User-Agent,用于表示客户端浏览器的类型、及操作系统的类型。以下是一 以个真实的HTTP请求抓包(客户端:小米浏览器)

GET /qianwen/ HTTP/1.1

Host: 192.168.1.109:8080

Connection: keep-alive

Cache-Control: max-age=0

User-Agent: Mozilla/5.0 (Linux; U; Android 7.1.2; zh-cn; MI 5X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.128 Mobile Safari/537.36 XiaoMi/MiuiBrowser/10.4.5

Accept: text/html

Accept-Language: zh-CN,en-US;q=0.8


所以,在服务器端只需要从请求里取这个User-Agent,看看里面有没有 Mobile 字样

HttpServletRequest request = ...

String userAgent = request .getHeader("User-Agent");


然后,分析这个UserAgent即可以判断出客户端是出自手机、还是电脑

String guessDevice(String userAgent)
{
if(userAgent == null)
return "pc";

if(userAgent.indexOf("Mobile")>=0)
return "phone";

if(userAgent.indexOf("Andr")>=0)
return "phone";

if(userAgent.indexOf("iPhone")>=0)
return "phone";

//MiuiBrowser
if(userAgent.indexOf("Miui")>=0)
return "phone";

return "pc";
}
当然,这个分析的方法需要自己去优化,它能覆盖大多数情况。


另外,一般的浏览器也都支持模拟手机版或桌面版来访问。





千问首页   |   返回上一页