您好,登錄后才能下訂單哦!
摘要: 微信瀏覽器是在微信安裝時內置在微信中的,針對瀏覽器的類型我們可以設置相應的安全策略——僅允許在微信內置瀏覽器中打開。本文選自《微信企業號開發完全自學手冊》。
在介紹JSAPI模式之前,首先需要介紹一下微信內置瀏覽器。可能很多人注意到了,在打開微信“朋友圈”鏈接的時候會出現進度條,如圖5.1所示,這實際上就是微信內置瀏覽器訪問頁面的進度。也就是說,“朋友圈”是通過微信內置的瀏覽器訪問的手機頁面,并且微信瀏覽器是在微信安裝時內置在微信中的。
微信內置瀏覽器進度條
注意:iPhone(蘋果)和Android(安卓)的微信內置瀏覽器不同,安卓手機上的微信使用的是QQ瀏覽器X5內核,蘋果手機上的微信使用的則是Safari瀏覽器。
JSAPI模式是通過調用微信JS-SDK開發手機Web頁面的模式,本質上亦是開發B/S(Browser/Server,瀏覽器/服務器模式)服務,只是業務上較以往的PC業務更加方便,功能上也稍具差異。在微信JSAPI模式下,不僅可以調用微信拍照、選圖、語音、位置等手機功能,還可以實現微信分享、掃一掃等微信特有的功能,同時,可以使用HTML5完成頁面效果的豐富,實現更加完美的用戶體驗。
針對瀏覽器的類型我們可以設置相應的安全策略—僅允許在微信內置瀏覽器中打開。
通過ServletActionContext.getRequest().getHeader("User-Agent")獲得當前瀏覽器代理信息,各類型瀏覽器代理信息如下:
(1)IE瀏覽器:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
(2)Google瀏覽器:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36
(3)360安全瀏覽器:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
(4)UC瀏覽器:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/5.7.15319.202 Safari/537.36
(5)手機QQ瀏覽器:
Mozilla/5.0 (Linux; Android 4.2.2; N1W Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile MQQBrowser/6.2 TBS/036558 Safari/537.36 V1_AND_SQ_6.5.0_390_YYB_D QQ/6.5.0.2835 NetType/WIFI WebP/0.3.0 Pixel/1080
(6)Android微信內置瀏覽器:
Mozilla/5.0 (Linux; Android 4.2.2; N1W Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile MQQBrowser/6.2 TBS/036558 Safari/537.36 MicroMessenger/6.3.23.840 NetType/WIFI Language/zh_CN
(7)iPhone微信內置瀏覽器:
Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_5 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13G36 MicroMessenger/6.3.24 NetType/4G Language/zh_CN
通過對比多個瀏覽器的代理信息,可以發現一個關鍵信息“MicroMessenger”。通過“MicroMessenger”便能夠區分請求的來源,從而保證信息只能在微信中打開,示例代碼如下:
HttpServletRequest req = ServletActionContext.getRequest(); //識別微信瀏覽器 String userAgent=req.getHeader("User-Agent");//里面包含了設備類型 if(-1==userAgent.indexOf("MicroMessenger")){ //如果不是微信瀏覽器,則跳轉到安全頁 return "safePage"; }
JSP頁面中,防止外部瀏覽器打開方法的示例代碼如下:
<% //識別微信瀏覽器 String userAgent=request.getHeader("User-Agent");//里面包含了設備類型 if(-1==userAgent.indexOf("MicroMessenger")){ //如果不是微信瀏覽器,則跳轉到安全頁 request.getRequestDispatcher("noRightPage.jsp").forward(request, response); } %>
備注:在微信中,可以通過userAgent.indexOf("iPhone")來區分是Android手機還是iPhone手機,示例代碼如下:
HttpServletRequest req = ServletActionContext.getRequest();String userAgent=req.getHeader("User-Agent");//里面包含了設備類型if(-1!=userAgent.indexOf("iPhone")){//-------如果是蘋果手機----------////此方法需要瀏覽器自己能夠打開,iOS可以,但是微信Android版內置瀏覽器不支持}else{//如果非蘋果手機,則自己處理文檔}
本文選自《微信企業號開發完全自學手冊》,點此鏈接可在博文視點官網查看此書。
想及時獲得更多精彩文章,可在微信中搜索“博文視點”或者掃描下方二維碼并關注。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。