利用nginx重定向解决微信H5无法修改安全域名的问题

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
②访问甲方链接
③访问我方链接
和踢皮球一样弹来弹去,多是一件美事啊。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值