微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决

今天偶然的把微信jssdk的debug打开后,发现调试信息总是提示签名错误,感情前两天api的"偶尔"不生效,不是因为还没执行代码,而是因为签名没正确啊!,这就是个100%可以重现的错误

但只要这个SPA刚刷新过,或加载完后中途没有跳转,,签名就会是正确的。

而当路由发生改变,我们对新"跳转"的页面重新签名之后,却出现了签名错误,而我们的签名明明是正确的,把各种参数拿去微信JS签名校验工具(http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign)去比对是一样的!

后面重大发现。。。其实

只要加载SPA入口页面的时候签名一次就行了,因为微信拿来签名的URL好像只认这个SPA第一个加载的页面的URL。。。window.location.href跳转其实就相当又加载了一次SPA

曾以为路由跳转了,就应该拿新的url去重新签名,却恰恰因为这点,把签名校验给搞出错了。。

所以解决方案就是:

只签名第一个加载的页面就行了,用ui-router进行的跳转,似乎只是改了地址。。而这个地址的修改。。微信的签名似乎不认。。他就认第一个加载的页面的URL。

时间: 2024-12-28 00:57:29

微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决的相关文章

微信小程序之页面跳转

如今 微信小程序已经充满的我们的生活,那么今天我就来说一说微信小程序中的最基础的 页面跳转 1. wx.navigateTo(保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面.) 简单点说,有两个页面 分别为页面A,页面B ,你想要从页面A 跳转到页面B 就可以在页面A使用这个方法 wx.navigateTo({ url: '../pages/B' }) 当然这是不穿参数的 只是单纯的跳转页面若想要传参的话 可以用"?+id=123&&na

AngularJS进阶 八 实现页面跳转并进行参数传递

angularjs实现页面跳转并进行参数传递 注:请点击此处进行充电! Angular页面传参有多种办法,我在此列举4种最常见的: 1. 基于ui-router的页面跳转传参 (1) 在AngularJS的app.js中用ui-router定义路由,比如现在有两个页面,一个页面(producers.html)放置了多个producers,点击其中一个目标,页面跳转到对应的producer页,同时将producerId这个参数传过去. .state('producers', { url: '/pr

微信点击图文消息链接 在根据判断跳到另一个页面 但是 点关闭 将当前的关闭之后 会出现空白页

<script> function ss() { var u = navigator.userAgent; if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {//安卓手机location.href = '2.html?id=3323/#wechat_redirect'; } else if (u.indexOf('iPhone') > -1) {//苹果手机location.href = '2.html?id

关于js单页面实现跳转原理以及利用angularjs框架路由实现单页面跳转

还记得我们刚开始学习html时使用的锚节点实现跳转吗? <a href="#target">我想跳转至目标位置</a> <p>第一条</p> .... <p id="#target">我是目标位置</p> ... 在js中实现跳转也是利用了这一点,下面直接在代码中解释吧: 1 <body> 2 <ul> 3 <li><a href="#/mus

微信app关闭页面跳到主界面

大家好: 今天遇到一个问题,整理了大半天!  微信app关闭页面跳到主界面:代码跟到家共享一下! 注意: 此方法只在手机上显示! <span style="font-size:14px;"> WeixinJSBridge.invoke('closeWindow',{},function(res){ });</span> 今天的问题是在前几天的文章后续添加的 <span style="font-size:14px;"><%@

微信企业号回调模式配置讲解 Java Servlet+Struts2版本 echostr校验失败解决

微信企业号回调模式配置讲解 Java Servlet+Struts2版本 echostr校验失败解决 echostr校验失败,请您检查是否正确解密并输出明文echostr 异常java.security.InvalidKeyException:illegal Key Size 也就是echostr校验失败,请您检查是否正确解密并输出明文echostr这个错误 企业微信登陆地址http://qy.weixin.qq.com/ 配置成功以后 Servlet public void doGet(Htt

IE下angularJS页面跳转的bug

用Angularjs做项目的过程中遇到一种情况:就是在IE浏览器下,当访问网站页面后,点击浏览器中的向左和向右(返回和前进)按钮时,需要点击两次才能正确跳转,但是在chrome及其他浏览器下该bug没有复现,后来找到原因就是angularjs中页面跳转的代码用的不恰当:在$watch,$on等中使用页面跳转最好配合$location使用. $scope.$watchCollection('parentObj.selection', function () { $scope.$broadcast(

微信小程序页面跳转、逻辑层模块化

一.页面的跳转 微信小程序的页面跳转函数方法有两个,另外还有两种模块跳转方式. 函数跳转: 1.wx.navigateTo(OBJECT): wx.navigateTo({ url: 'test?id=1' })//保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面. //问号后面的参数为传递至指定页面onload方法内的参数.id为自定义参数名,在跳转页面获取参数值时,也是通过这个设置的参数来获取的. 2.wx.redirectTo(OBJECT): wx

微信小程序 从含有tabbar的页面跳转到不含有tabbar的页面

如何离开含有tabbar的页面 在微信小程序开发过程中,我们会碰到从某页跳转到一个含有tabbar的页面的需求, 用 wx.navigateTo({url: '...',})  不起作用,需要使用 wx.switchTab({url: '...',}) 来实现. 那么,我们反过来,如何从含有tabbar的页面跳转到一个不含有/隐藏了tabbar的页面呢? 在尝试了上述的两个API后发现不起作用,wx.switchTab({url: '...',}) 倒是可以在有tabbar的页面之间跳转,但无法