jssdk给前端开发带来了很大的便利性,可以使用很多原生的相关功能。但是便利的同时,也有不少限制。其中之一便是安全域名。
正常场景
正常场景,h5中使用jssdk时,微信会进行相关验证。具体内容参考:JS-SDK 。
关键点:
1.公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”
2.在需要调用 JS 接口的页面引入JS 文件
3.通过 config 接口注入权限验证配置
wx.config({
debug: true, // 开启调试模式,调用的所有 api 的返回值会在客户端 alert 出来,若要查看传入的参数,可以在 pc 端打开,参数信息会通过 log 打出,仅在 pc 端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名
jsApiList: [] // 必填,需要使用的 JS 接口列表
});
注:wx.config相关参数,需要由后端生成,需要微信: access_token 及 jsapi_ticket 来生成。
安全域名已满场景
目前,腾讯的规则是 JS接口安全域名 总数是5个,每个月修改次数是5次。但对于大一些的公司来说,这个域名个数是远远不够的。个数不够的场景下,要如何解决呢?
1.新申请一个公众号
优点:一般来说,新申请一个公众号,相对容易些。这时,就又多出来5个安全域名。
缺点:同一个大的项目中,使用不同的公众号授权安全域名,那么需要使用部分jssdk相关功能时,会出现相关提示:
这里的名称,便是公众号的名称。因为使用不同的公众号进行授权,故这里的名称便会不一致。
2.nginx等转发
如果不申请新的公众号,便可以采用nginx转发的方式来解决。
- 已加入js接口安全域名的相关方A,提供后台接口,供使用方B调用获取权限验证(wx.config所需相关内容)相关内容。
- 已加入js接口安全域名的相关方,在 域名 所在服务器下,配置nginx转发(可根据路径区分前端页面及后端接口),把B相关的请求,代理转发至B所在的服务器即可。
3.顶级域名
如果 公司顶级域名在 公众号里配置的比较早,早到腾讯还没有加校验文件,那么相关的二级域名,三级域名均可以正常使用jssdk。
以上为个人使用过程中相关总结,如有疑问,欢迎探讨。