1測試用代碼
項(xiàng)目中遇到的, 公司的開發(fā)不是前后端分離的模式, html頁面是后端返回的, 所以頁面需要根據(jù)客戶端是PC還是手機(jī)調(diào)整布局;
試了一下在后端獲取客戶端類型, 方法是用請(qǐng)求報(bào)文里的 headers中的 user-agent 信息;
起初也不知道, 于是做了以下試驗(yàn)代碼
@GetMapping(value = "/test")
public ModelAndView CheckLoginForModuleUse(HttpServletRequest req){
System.out.println("=======================訪問端信息=======================");
Enumeration<String> headerNames = req.getHeaderNames();
while (headerNames.hasMoreElements()) {
String key = headerNames.nextElement();
System.out.print(key);
System.out.print("=");
System.out.println(req.getHeader(key));
}
System.out.println("=======================END=======================");
}
2 收集到的日志
部署并嘗試用多種客戶端訪問后, 有以下日志產(chǎn)生, 本次使用的客戶端有:
1 谷歌瀏覽器 windows
2 Edge瀏覽器 windows
3 iPhone手機(jī)App, (App是客戶的app, 在app內(nèi)部訪問接口)
4 Android手機(jī)App
5 PC端App
比較遺憾沒有 macbook 試試;文章來源:http://www.zghlxwxcb.cn/news/detail-510712.html
eg.1 明顯這個(gè)客戶端是 iphone14
=======================訪問端信息=======================
host=abc.def.com.cn
accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
upgrade-insecure-requests=1
cookie=cookiesession1=678B28FB01234ABCDEFGHIJKLMNO798D
user-agent=Qing/0.9.91;iOS 15.5;Apple;iPhone14,4;deviceId:354a8216-d7b0-41f8-9c74-50ea4771c68e;deviceName:iPhone%20%284%29;clientId:38881;os:iOS 15.5;brand:Apple;model:iPhone14,4;oem:bgy;lang:zh-CN;fontNum:0;Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;redVer:1.0;V9BridgeProtocalNoDoubleSlash;ver:1.0.21;
accept-language=zh-CN
accept-encoding=gzip, deflate
connection=keep-alive
=======================END=======================
eg.2 iphone14
=======================訪問端信息=======================
host=abc.def.com.cn
accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
upgrade-insecure-requests=1
cookie=JSESSIONID=2E49BEB3B58920C94C057B74F595FDF6; dluinfoforsec=8PdlRxrxgqzc8+CJUTqV4T69qFarxTwudltN6pNW6M8r7Y+HNzfi262B8JEkzGH0; cookiesession1=678B28FB01234ABCDEFGHIJKLMNO798D
user-agent=Qing/0.9.91;iOS 15.5;Apple;iPhone14,4;deviceId:354a8216-d7b0-41f8-9c74-50ea4771c68e;deviceName:iPhone%20%284%29;clientId:38881;os:iOS 15.5;brand:Apple;model:iPhone14,4;oem:bgy;lang:zh-CN;fontNum:0;Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;redVer:1.0;V9BridgeProtocalNoDoubleSlash;ver:1.0.21;
accept-language=zh-CN
accept-encoding=gzip, deflate
connection=keep-alive
=======================END=======================
eg.3 iphone10
=======================訪問端信息=======================
host=abc.def.com.cn
accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
upgrade-insecure-requests=1
user-agent=Qing/0.9.91;iOS 13.6.1;Apple;iPhone10,1;deviceId:a84d5a21-b419-4e97-8fbf-7adedf439687;deviceName:The%20Mountain%20Echoes;clientId:38881;os:iOS 13.6.1;brand:Apple;model:iPhone10,1;oem:bgy;lang:zh-CN;fontNum:0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;redVer:1.0;V9BridgeProtocalNoDoubleSlash;ver:1.0.21;
accept-language=zh-CN
accept-encoding=gzip, deflate
connection=keep-alive
x-forwarded-for=144.0.23.4
x-real-ip=144.0.23.4
x-forwarded-proto=http
=======================END=======================
eg.4 Android
=======================訪問端信息=======================
host=abc.def.com.cn
connection=keep-alive
upgrade-insecure-requests=1
user-agent=Qing/0.9.86;Android 10.1.8;OPPO;PEDM00;deviceId:80fa56ba-540f-33a8-bdcc-adea579cbf8b;deviceName:OPPO PEDM00;clientId:10201;;os:Android 10.1.8;brand:OPPO;model:PEDM00;lang:zh-CN;ver:1.0.11;redVer:1.0;Mozilla/5.0 (Linux; Android 12; PEDM00 Build/RKQ1.211103.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36
accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
x-requested-with=cn.com.happypace.dom1
accept-encoding=gzip, deflate
accept-language=zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
cookie=JSESSIONID=A8C16AA7DD65694338DF1D7E84530A51; ASP.NET_SessionId=k3wpql1rj4ifx4nrabo4bgux; dluinfoforsec=8PdlRxrxgqzc8+CJUTqV4T69qFarxTwudltN6pNW6M8r7Y+HNzfi262B8JEkzGH0
x-forwarded-for=223.104.69.30
x-real-ip=223.104.69.30
x-forwarded-proto=http
=======================END=======================
eg.5 有Chrome字樣, 分不清是 chrome 還是 edge
=======================訪問端信息=======================
host=10.10.166.37
connection=keep-alive
upgrade-insecure-requests=1
user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36
accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
accept-encoding=gzip, deflate
accept-language=zh-CN,zh;q=0.9
cookie=userInfo=YWRtaW58YWQxYTE5OTEtMzY4Mi00MDUzLWJiNDYtYTg5MGM1Mjk4NmZlfHRydWU=; JSESSIONID=D3093E40172B09AF138EE6A729EE653C; dlcurbigdeptid=dlwwr; dluinfoforchangeuser=48vmoGkU7M78j2IOOsDD1A==; dluinfoforsec=hCdwq8mRUhOZMaTsxXxB/RZCsLjdOYUudTueNHq3/AwdBdHDeq7+gtiuzXEUVjZj
=======================END=======================
eg.6 有Chrome字樣, 分不清是 chrome 還是 edge
=======================訪問端信息=======================
host=abc.def.com.cn
connection=keep-alive
upgrade-insecure-requests=1
user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36
accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
accept-encoding=gzip, deflate
accept-language=zh-CN,zh;q=0.9
cookie=userInfo=YWRtaW58YWQxYTE5OTEtMzY4Mi00MDUzLWJiNDYtYTg5MGM1Mjk4NmZlfHRydWU=; JSESSIONID=A596B4209B9DFCD1726C1224ED8F6FC1; Hm_lvt_5c138214afe064d1f739fb9535e08b20=1646808109; dlcurbigdeptid=dlwwr; dluinfoforchangeuser=48vmoGkU7M78j2IOOsDD1A==; dluinfoforsec=hCdwq8mRUhOZMaTsxXxB/RZCsLjdOYUudTueNHq3/AwdBdHDeq7+gtiuzXEUVjZj
x-forwarded-for=144.0.23.4
x-real-ip=144.0.23.4
x-forwarded-proto=http
=======================END=======================
eg.7 有Chrome字樣, 分不清是 chrome 還是 edge
=======================訪問端信息=======================
host=abc.def.com.cn
connection=keep-alive
upgrade-insecure-requests=1
user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.26
accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
accept-encoding=gzip, deflate
accept-language=zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
x-forwarded-for=144.0.23.4
x-real-ip=144.0.23.4
x-forwarded-proto=http
=======================END=======================
eg.8 有Chrome字樣, 分不清是 chrome 還是 edge
=======================訪問端信息=======================
host=abc.def.com.cn
connection=keep-alive
upgrade-insecure-requests=1
user-agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
accept-encoding=gzip, deflate
accept-language=zh-CN,zh;q=0.9
cookie=JSESSIONID=C2546DAF8A563BB96F49BF8F787EB904; dlcurbigdeptid=dlwwr; dluinfoforchangeuser=48vmoGkU7M78j2IOOsDD1A==; dluinfoforsec=8PdlRxrxgqzc8+CJUTqV4T69qFarxTwudltN6pNW6M8r7Y+HNzfi262B8JEkzGH0
=======================END=======================
3 結(jié)論
經(jīng)分析, 移動(dòng)端的 user-agent 信息中都含有 Mobile 字樣, 其中安卓機(jī)還帶有 Android 字樣, 蘋果機(jī)帶有 iPhone 字樣;
最初分析的時(shí)候并沒有注意到這個(gè)獨(dú)有的 Mobile 字樣, 所以我的代碼是這樣實(shí)現(xiàn)的文章來源地址http://www.zghlxwxcb.cn/news/detail-510712.html
@GetMapping(value = "/test")
public ModelAndView CheckLoginForModuleUse(HttpServletRequest req){
String url = "xxxx";
String userAgent = req.getHeader("user-agent");
if (userAgent != null) {
userAgent = userAgent.toLowerCase();
if (userAgent.contains("android") || userAgent.contains("iphone")) {
// url中帶上參數(shù)cusotmer=2標(biāo)識(shí)類型, 頁面html中已經(jīng)做了處理, 自動(dòng)根據(jù)customer的值調(diào)整布局
url += "&cusotmer=2";
}
}
}
到了這里,關(guān)于Java后端獲取接口訪問端是PC還是手機(jī)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!