900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > html页面如何访问控制限制 如何限制网页只能在微信内置浏览器中打开访问

html页面如何访问控制限制 如何限制网页只能在微信内置浏览器中打开访问

时间:2023-08-15 02:44:00

相关推荐

html页面如何访问控制限制 如何限制网页只能在微信内置浏览器中打开访问

最近公众号和个人网站进行了对接,用户回复关键词,公众号返回图文消息给用户,用户再点击图文消息即可跳转到一个网页链接,在微信的内置浏览器中打开。问题是这个页面在电脑上的浏览器也是可以访问的,那么其他人就可以很随便地查看页面的源代码,或者模拟请求了。有什么方法可以防止这一点呢?

浏览器访问网页时都会发送一个UserAgent给服务器,它里面包含了一些浏览器及用户操作系统的基本信息,既然微信有内置浏览器,那么用微信浏览网页时这个UserAgent里面应该会带上和微信相关的独有的标识。测试后证实了这一说法,UserAgent为:

Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.255

解决方案就是用js判断请求的UserAgent,代码如下:

// 对浏览器的UserAgent进行正则匹配,不含有微信独有标识的则为其他浏览器

var useragent = navigator.userAgent;

if (useragent.match(/MicroMessenger/i) != ‘MicroMessenger’) {

// 这里警告框会阻塞当前页面继续加载

alert(‘已禁止本次访问:您必须使用微信内置浏览器访问本页面!’);

// 以下代码是用javascript强行关闭当前页面

var opened = window.open(‘about:blank’, ‘_self’);

opened.opener = null;

opened.close();

}

代码在Android、iPhone、iPad、PC上都进行了测试,只要不是在微信内部打开网页的,首先就会弹出上面那个警告框,此时后面的页面是空白的,什么都还没加载,当点击警告框的确定按钮之后,最后三行代码将强行关闭当前页面。

注:对于伪造的UserAgent,还是可以绕过这条限制的,总的来说就是防君子不防小人。

网上找到的方式汇总:

可以按照以下方式设置:

1、js或程序判断,userAgent,是否包含micromessenger。

2、js判断微信相关特有函数。

3、调用oauth接口,如果不想用户感知的,可以调用scope=snsapi_base的方式,这个最后只能获得用户openid。scope=snsapi_userinfo方式,用户会看到一个授权页面,点击授权后,可以获得用户所有信息。

4、还可以通过判断是否为WeixinJSBridge进行限制,如(其他程序语言按照对应语法进行修改):

if( typeof WeixinJSBridge !== “undefined” )

{

return true;

}

可行性有待进一步测试,有时间的可以试一下。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明如何限制网页只能在微信内置浏览器中打开访问!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。