关闭

微信JSAPI模式与浏览器类型安全访问

标签: 微信JSAPI
2463人阅读 评论(0) 收藏 举报

摘要: 微信浏览器是在微信安装时内置在微信中的,针对浏览器的类型我们可以设置相应的安全策略——仅允许在微信内置浏览器中打开。本文选自《微信企业号开发完全自学手册》。

1 JSAPI模式介绍

  在介绍JSAPI模式之前,首先需要介绍一下微信内置浏览器。可能很多人注意到了,在打开微信“朋友圈”链接的时候会出现进度条,如图5.1所示,这实际上就是微信内置浏览器访问页面的进度。也就是说,“朋友圈”是通过微信内置的浏览器访问的手机页面,并且微信浏览器是在微信安装时内置在微信中的。
          【图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{
//如果非苹果手机,则自己处理文档
}

  本文选自《微信企业号开发完全自学手册》,点此链接可在博文视点官网查看此书。
                    图片描述
  想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
                       图片描述

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

微信公众号对接JSAPI模式的微信支付简介与总结

步骤一:初始化微信支付框架 (一)、官方文档说明: (二)、注意事项: 1.附录1红框中所说的access_token不是通过code获取的用户access_token,具体获取方式请点击对应...
  • Tongdao
  • Tongdao
  • 2015-07-14 15:02
  • 1988

微信企业号开发七:JSAPI模式

微信中的第三个模式就是JSAPI模式,这里面可以查看地理位置、分享qq、扫一扫等功能,这个功能的使用 1、在页面引入js /2、2、config信息验证后会执行ready方法,所有接口操作写在re...
  • myfmyfmyfmyf
  • myfmyfmyfmyf
  • 2015-12-16 14:28
  • 5787

微信扫码支付 模式一 (JSAPI)

这个微信支付是静态二维码支付,就是店面贴着一个二维码,让消费者自己扫自己输入金额,自己发起支付的支付方式。要准备的东西比较麻烦: 1、到微信公众号平台设置Oauth2的网页验证域名(用于获取code...
  • qq_22778717
  • qq_22778717
  • 2017-04-01 11:55
  • 1521

微信JSAPI支付教程

@author StormMa @date 2017-05-23 01:41 生命不息,奋斗不止! 最近一个项目中用到了微信开发,之前没有做过支付相关的东西,算是拿这个来练练手,刚开始接触支...
  • StromMaybin
  • StromMaybin
  • 2017-05-30 22:11
  • 700

6.微信支付之JSAPI支付

JSAPI支付JSAPI支付是用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块完成支付使用场景 用户在微信公众账号(必须是服务号)内进入商家公众号,打...
  • luciswe
  • luciswe
  • 2015-05-22 12:35
  • 3633

初始化微信硬件JSAPI接口库(7)

初始化微信硬件JSAPI接口库
  • linfanhehe
  • linfanhehe
  • 2016-11-01 15:15
  • 968

微信公众平台jsapi开发教程(3)页面初步接入微信jsapi

微信公众平台jsapi开发教程页面初步接入微信jsapi
  • linfanhehe
  • linfanhehe
  • 2016-09-13 11:23
  • 4403

微信jsapi-java初步接入

【微信公众号对于开发者来说】 接触微信应该比大部分人都早, 记得那会开了微信号,大多数人还不知道什么东东, 微信发展如此迅速,着实很强大。 很多次要开发一些微信公众号的东西, 但是都卡在了“...
  • uikoo9
  • uikoo9
  • 2015-06-18 00:21
  • 12110

微信支付-JSAPI模式开发

这是我写的第三篇文章,是一篇关于微信支付的技术类文章,目的是分享给有需要的朋友,大家可以一起交流进步。
  • zhangdeTalk
  • zhangdeTalk
  • 2016-04-20 18:32
  • 1894

微信jsapi开发教程之微信jsapi与java初步接入(第四课)

参数名   描述 appId 应用ID 登录微信公众号管理平台可查询 timestamp  必填,生成签名的时间戳   nonceStr 必填,生...
  • dragonpeng2008
  • dragonpeng2008
  • 2016-11-11 16:20
  • 425
    个人资料
    • 访问:3859492次
    • 积分:55871
    • 等级:
    • 排名:第58名
    • 原创:1459篇
    • 转载:83篇
    • 译文:1篇
    • 评论:3784条
    博客专栏
    文章存档
    最新评论