微信JSAPI模式与浏览器类型安全访问
摘要: 微信浏览器是在微信安装时内置在微信中的,针对浏览器的类型我们可以设置相应的安全策略——仅允许在微信内置浏览器中打开。本文选自《微信企业号开发完全自学手册》。
1 JSAPI模式介绍
在介绍JSAPI模式之前,首先需要介绍一下微信内置浏览器。可能很多人注意到了,在打开微信“朋友圈”链接的时候会出现进度条,如图5.1所示,这实际上就是微信内置浏览器访问页面的进度。也就是说,“朋友圈”是通过微信内置的浏览器访问的手机页面,并且微信浏览器是在微信安装时内置在微信中的。
微信内置浏览器进度条
注意:iPhone(苹果)和Android(安卓)的微信内置浏览器不同,安卓手机上的微信使用的是QQ浏览器X5内核,苹果手机上的微信使用的则是Safari浏览器。
JSAPI模式是通过调用微信JS-SDK开发手机Web页面的模式,本质上亦是开发B/S(Browser/Server,浏览器/服务器模式)服务,只是业务上较以往的PC业务更加方便,功能上也稍具差异。在微信JSAPI模式下,不仅可以调用微信拍照、选图、语音、位置等手机功能,还可以实现微信分享、扫一扫等微信特有的功能,同时,可以使用HTML5完成页面效果的丰富,实现更加完美的用户体验。
2 浏览器类型安全访问
针对浏览器的类型我们可以设置相应的安全策略—仅允许在微信内置浏览器中打开。
通过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{
//如果非苹果手机,则自己处理文档
}
本文选自《微信企业号开发完全自学手册》,点此链接可在博文视点官网查看此书。
想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
微信JSAPI模式与浏览器类型安全访问相关推荐
- 微信限制内置浏览器的访问方法
1.通过JS判断微信的独有标识UserAgent,但是对于伪造的UserAgent,还是可以绕过该限制. <script type="text/javascript"> ...
- 微信企业号开发七:JSAPI模式
微信中的第三个模式就是JSAPI模式,这里面可以查看地理位置.分享qq.扫一扫等功能,这个功能的使用 1.在页面引入js <meta name="viewport" cont ...
- 微信jsApI及微信分享对应在手机浏览器的调用总结。
摘录自别人的博客: 第一篇:微信内置浏览器的JsAPI(WeixinJSBridge续) 之前有写过几篇关于微信内置浏览器(WebView)中特有的Javascript API(Javascript ...
- 【TUN模式】对QQ或者微信域名、QQ邮箱、微信公众号文章、微信开发者社区相关的网站访问非常慢、图片加载不出来、网页空白的解决方案
一.问题背景 最近在电脑上登录微信时,或者浏览微信公众号的文章时,经常出现卡顿得出不来图片的情况,即使出来了也是排版异常. 二.研究现状(哈哈哈哈科研人的写作习惯?) 目前网上有些大咖对这个问题给出的 ...
- 电脑微信QQ正常登录,浏览器无法访问网站
之前实习的时候,我们老师这样讲--难倒网络工程师的往往是网络(虽然我目前不是网络工程师. 今天,电脑能上QQ微信,但是浏览器不能访问.切换浏览器--不行,使用火绒和联想电脑管家的网络诊断修复--不行, ...
- Mac连接网线能够接收微信消息,浏览器不能访问网页
1. 问题 Mac连接网线能够接收微信消息,浏览器不能访问网页. 访问网页,有提示:如下信息,找不到IP地址 2. 解决方法 和其他人的配置进行比较,发现自己的网络设置中,DNS服务器显示的是8.8. ...
- 浏览器兼容模式下网页无法访问
浏览器兼容模式下网页无法访问 解决方案: 打开360浏览器" 打开菜单,点击"工具",找到"Internet属性"并点击 点击"高级&quo ...
- php 公众号内h5支付宝支付宝支付宝支付宝支付,微信浏览器中支付宝wap支付和微信JSAPI公众号支付...
手机浏览器只有支付宝wap支付,微信浏览器中出现支付宝wap支付和微信JSAPI公众号支付,其中支付宝wap在线支付没有在新窗口打开(兼容大部分手机),Thinkphp3.2公众号支付 下载资源 下载 ...
- 微信开发php插件下载图片,微信开发之微信jsapi选择图片,上传图片,预览和下载图片方法...
参数描述 appId公众号的唯一标识 应用id timestamp生成签名的时间戳 nonceStr生成签名的随机串 signature签名 上述表格中的四个参数是初始化调用微信jsapi的凭证,咱们 ...
- 微信JSAPI支付对接流程及支付接口设计
文章目录 前言 一.JSAPI支付场景及逻辑 二.开发步骤 1.设置支付目录 2.设置授权域名 3.业务流程 三.代码设计 1. 支付页面 2. Controller 3. JS调起支付 4. 工具类 ...
最新文章
- 什么是NullReferenceException,如何解决?
- 李飞飞获全球最权威女性领导力奖 Athena Award,讲述推动AI多元化三大原因(视频)...
- 科普:Flume是啥?干嘛用的?
- OpenStack实践(一):Ubuntu16.04下DevStack方式搭建p版OpenStack
- Qt Creator使用3D组件
- 只提取单元格中的数字_提取Excel单元格中的数字(4类)及原理
- ik分词和jieba分词哪个好_Lucene.net(4.8.0) 学习问题记录五: JIEba分词和Lucene的结合,以及对分词器的思考...
- ETL工具学习以及安装部署
- dev gridcontrol 单元格内容复制_Excel中的复制粘贴,不只是你想的那么简单的
- IIS 添加支持json格式文件
- tf data 常用操作
- c51间隔点亮c语言编程,51系列单片机C语言编程
- js加载flv格式视频
- 百度wz竞价推广关键词排名的影响因素大全
- python第二版课后答案第七章7.5_IDA7.5 启动基础配置
- 10win重启计算机黑屏,win10启动后黑屏怎么回事_windows10开机启动黑屏如何解决
- 临别给《生活大爆炸》做个台词数据分析,你猜谢耳朵最爱说什么?
- 推荐21款最佳 HTML5 网页游戏
- 针对Linux系统主机,进入修复模式,解决开机报错问题
- XSell和Xftp的简单使用方法