利用nginx重定向解决微信H5无法修改安全域名的问题
文章目录
- 1.获取用户信息接口
- 2.设置分享信息接口
- ①反向代理
- ②运用我方的公众号
1.获取用户信息接口
需要配置信息
①设置与开发->公众号设置->功能设置底下的几个域名
②设置与开发->基本配置->IP白名单
③设置与开发->基本配置->AppID和AppSecret
其中第②、③个是比较宽裕的资源,一般不会紧张。
第①个由于网页授权域名的位置只有两个,导致一般会比较紧张。
如果甲方的域名已经没有腾挪的空间,应该怎么办呢?
可以通过nginx的rewrite重定向功能来实现相关的功能。
大致流程如下图,接下来咱们细说。
安全域名的作用就是用于获取用户的code。
咱们知道获取code需要访问微信的认证服务链接,用于验证的主要是两个参数。
①appid这个信息上面我们说过了,是公众号的唯一标识。
②redirect_uri认证后的重定向链接,这个链接的hostname就需要是绑定在公众号后台的安全域名。
所以我们需要甲方的Nginx帮我们配置:
location /static{rewrite ^/static/(.*)$ https://your_host_name/static/$1 break;
}
这个语句还是比较好理解的。
只要Nginx识别到static这个串,就把请求丢给我方服务器进行处理。
这个只是为了绕过微信的重定向链接的限制,重定向后会导致链接的跳转,也就是window.location.href
的信息会变化。
但是没关系,咱们已经通过微信的重定向认证获取到了code,那后面的操作就和这个安全域名没啥关系了。
有了code以后,我们只需要申请到甲方的AppID、AppSecret和服务器白名单设置。
后面的工作就是把我们的微信服务写一个甲方专用版的就是了。
PS:
其实上面流程图中的1、2两个流程画的不是很准确,1、2应该是让客户重定向到我方的nginx上去获取静态资源。
但是这样画会导致图更加复杂,而且这个流程对整体的理解和业务影响不大,所以我就简化了,新手需要注意甄别。
2.设置分享信息接口
这个接口的事项就比较复杂了,用单纯的rewrite重定向很难做到。
主要有两个思路可以解决:
①运用反向代理
②运用我们自己的公众号进行配置。
①反向代理
运用方向代理是最简单的,在甲方的服务器上配置如下信息:
location /yewu{rewrite ^/yewu/(.*)$ /yewu/$1 break;# 这句不是必要的,可以方便转化接口名称proxy_pass https://your_host_name/;# 重点是这句
}
如果你和我一样用的是django+uwsgi方案是不是看到这个配置非常的眼熟?
没错就是我们配置中最常用到的proxy_pass
。
这玩意简单来说就是把对应的请求帮你去访问你反向代理的地址,然后将他返回的数据在返回给客户端。
和重定向不一样,这个操作是无感的。
重定向会跳转到新的域名,所以客户端能知道自己跳转了链接。
而反向代理客户端就像访问了一个普通的服务器,所以他的最大优势是方便,都和访问原服务器一样了,所以只要配置好代理的信息,后面基本就和以前的操作一样了。
但也存在一个问题就是做反向代理的那个服务器的网络压力会比较大,毕竟所有数据都是要经过他的。
所以如果甲方的服务器并没有那么高的配置的时候,就不要用这个方法了。
②运用我方的公众号
那配置朋友圈信息只是要一个公众号进行信息的背书而已,并不会影响到具体业务,所以运用我方的公众号也无伤大雅。
那这个方法的难点在哪呢?咱们先来看看ready里面的代码。
wx.updateAppMessageShareData({title: '分享标题!', // 分享标题desc: '分享描述', // 分享描述link: '分享链接', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致imgUrl: '分享图片链接', // 分享图标success: function () {// 设置成功// window.alert('分享给人设置成功');console.log('分享给人设置成功')
}});
其中那个link参数,是需要和我们使用的这个公众号的安全域名是一致的。
那咱们这里用的是自己的公众号啊,难道把自己的公众号也绑定一个甲方的域名吗?
这可太麻烦了,有没有更简单的解决办法。
有,朋友们,一起来套娃。
location /yewu2{rewrite ^/yewu2/(.*)$ https://baba's_host_name(甲方域名)/yewu/$1 break;
}
我选择了定义一个新的链接,让这个链接又跳转到甲方的域名上。
也就是说如果用户访问了分享的链接,他会
①访问我方链接2
②访问甲方链接
③访问我方链接
和踢皮球一样弹来弹去,多是一件美事啊。
利用nginx重定向解决微信H5无法修改安全域名的问题相关推荐
- 利用NATAPP隧道解决微信公众号开发之本地调试难题
文章目录 公众号的分类 微信公众平台: 编辑模式 开发模式 开发模式配置流程 1.登录测试号页面,可以看到该测试号相关的信息 2.配置参数介绍 3.搭建本地应用(java/python/php等语言均 ...
- html5微信视频无法播放视频教程,解决微信h5页面视频播放问题实例
解决微信h5页面视频播放问题实例 content="width=device-width,initial-scale=1, maximum-scale=1.0, minimum-scale= ...
- H5项目中通过iframe引入语音导览解决微信jsapi关于同一级域名二级域名跨域问题解决方案
H5项目中通过iframe引入语音导览解决微信jsapi关于同一级域名二级域名跨域问题解决方案 在项目的入口文件App.js中 <iframe src="https://www.abc ...
- 解决微信H5页面软键盘弹起后页面下方留白的问题(iOS端)
解决微信H5页面软键盘弹起后页面下方留白的问题(iOS端) 参考文章: (1)解决微信H5页面软键盘弹起后页面下方留白的问题(iOS端) (2)https://www.cnblogs.com/zouw ...
- 防止微信H5下拉出现域名究极解决方案
背景:最近在微官网项目时,有一个优化问题,需要阻止微信H5页面下滑时背景出现域名,在网上查到的解决方法大多数是直接阻止掉touchmove的默认事件,如下: document.addEventList ...
- h5支付不能打开支付宝 ios_iOS 解决微信h5支付,支付宝h5支付无法直接返回APP的问题...
由于公司的业务需要,为了节省申请开通微信支付的时间和人力,公司决定使用微信h5支付.这样即节省了时间,同时以后所有的APP都能使用h5支付,既方便又快捷. 但是真正做的时候问题来了,当你支付成功之后或 ...
- 解决微信H5获取SDK授权报错提示errMsg: “config:fail,Error: 系统错误,错误码:63002,invalid signature [20200908 22:17:17][]“
如果常规检查都做过可以仔细看下微信开放文档 这个里面的报错原因 如果都不是那么极有可能是(恭喜你!看样子你的H5页面日活人数还蛮多[呲牙]) 获取腾讯微信平台access_token超过每日默认上限2 ...
- 利用网络劫持解决微信远程域名真机调试Api问题
背景 虽然微信提供了开发者工具,可以满足大部分调试需求,但遇到如微信支付.微信扫码等类似接口时,我们不得不使用真机+域名来调试. 问题 因为只有被微信后台设为信任的域名才能被微信正确验证与签名. 我们 ...
- 解决微信H5端用户注册登录
前端可主动或用户手动触发newregist(),引导用户登录或注册. 该演示为以snsapi_userinfo为scope发起的网页授权 前端页面发起登录请求: Vue.prototype.newre ...
最新文章
- ELK安装文档及相关优化
- JVM类加载机制_字节码执行引擎_Java内存模型
- [转载]Docker的安装配置及使用详解
- 软件测试 : 第5次作业 -- 基于Jmeter的 性能测试
- handsontable的单元格操作方法
- 剑指offer七:两个链表的第一个公共结点
- 二项分布的期望方差证明_二项分布的期望和方差
- Unix/Linux系统中的inode总结
- ctf piapiapia(反序列化逃逸)解题记录
- Unity获取物体自身坐标轴的方向以及沿着该方向运动的方法
- 51nod 13831048 整数分解为2的幂 [递推]【数学】
- 旅游公寓APP开发特点
- arch linux界面,ArchLinux图形界面安装
- 狂汗!VOD点播系统漏洞解析,***电影网站!
- matlab 逐步回归代码,(最新整理)逐步回归matlab程序
- nagios报警信息,发送到微信端
- 4.1 Web前端开发介绍
- 继 QQ 被曝扫描浏览器历史记录之后,微信也被曝出会扫描所有 Chromium cookies
- 2021最新编程语言排行榜
- 每瓶海天酱油都有“大数据”