解决在手机微信中由于安全策略导致无法唤醒app的问题

2018-07-28  本文已影响0人  e93a88ffeabd

解决在手机微信中由于安全策略导致无法唤醒app的问题

背景:

这周一直在做h5唤醒app的功能,当测试到微信的时候发现在微信内部使用ip地址打开h5的时候无法触发唤醒机制,经查原因是由于在微信内部存在安全机制,唤醒app属于有安全限制的行为,只有在微信白名单中的ip、域名才可以触发唤醒行为。所以对于普通开发者来说,仅仅使用个人pc的ip地址或者未在白名单中的ip、域名均无法唤醒app

解决方法:

使用nginx配置假域名

    server {
        listen 80;
        server_name test.tencent.com;   # 配置的假域名,以test.tencent为例
        location / {
            proxy_pass http://127.0.0.1:3000;   # 假域名上的所有请求都反向代理到本地node服务上
                                                # 具体代理的端口依据自身本地服务监听的端口而定
        }
    }

配置本地host文件

    127.0.0.1 test.tencent.com

这样配置完成后,我们可以保证在pc浏览器上输入test.tencent.com可以正常的显示本地运行的服务
pc浏览器输入url -> 进入host文件 -> 当项目内有数据请求时 -> nginx转发到本地服务 -> 正常运行

在手机上也可以访问自定义域名

我们最终的目是让手机也可以实现上面的功能,如何做呢?这里提供一种思路,既利用抓包工具作为中转服务器将手机的请求进行拦截代理到本地项目所起的服务上

在这里先解释下抓包工具的工作原理:

那么利用抓包工具的这个特性,我们就可以将手机的请求代理到抓包工具上,由抓包工具进行转发实现上述功能(如果不经过抓包工具这层的话,当在手机输入自定义域名后,手机并没有host配置这种东西,所以根本没法链接到pc上的本地服务

通过以上几个步骤就可以让手机访问我们自定义的假域名从而通过微信安全机制执行app唤起功能
手机浏览器输入url -> 抓包工具拦截请求 -> 抓包工具模拟请求并重新发出 -> 进入host文件 -> 当项目内有数据请求时 -> nginx转发到本地服务 -> 正常运行

上一篇下一篇

猜你喜欢

热点阅读