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


Posted in Javascript onSeptember 09, 2016

今天偶然的把微信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。

通过此文,希望能帮助到遇到此问题的朋友,谢谢大家对本站的支持!

Javascript 相关文章推荐
基于jquery的button默认enter事件(回车事件)。
May 18 Javascript
五段实用的js高级技巧
Dec 20 Javascript
Javascript alert消息换行的方法
Aug 07 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
Sep 21 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
Nov 19 Javascript
JSF中confirm弹出框的用法示例介绍
Jan 07 Javascript
Node.js实现简单聊天服务器
Jun 20 Javascript
jquery日历插件datepicker用法分析
Jan 22 Javascript
Boostrap模态窗口的学习小结
Mar 28 Javascript
使用jquery.form.js实现图片上传的方法
May 05 Javascript
JavaScript动态绑定详解
Sep 14 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
Apr 07 Javascript
Vuejs第十三篇之组件——杂项
Sep 09 #Javascript
jQuery属性选择器用法示例
Sep 09 #Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
Sep 09 #Javascript
vuejs动态组件给子组件传递数据的方法详解
Sep 09 #Javascript
Vuejs第十二篇之动态组件全面解析
Sep 09 #Javascript
js动态生成form 并用ajax方式提交的实现方法
Sep 09 #Javascript
Ajax使用原生态JS验证用户名是否存在
May 26 #Javascript
You might like
PHP的preg_match匹配字符串长度问题解决方法
2014/05/03 PHP
浅谈Eclipse PDT调试PHP程序
2014/06/09 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
jquery提示 "object expected"的解决方法
2009/12/13 Javascript
jQuery 1.5最新版本的改进细节分析
2011/01/19 Javascript
高性能Javascript笔记 数据的存储与访问性能优化
2012/08/02 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
js实现每日自动换一张图片的方法
2015/05/04 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
每天一篇javascript学习小结(String对象)
2015/11/18 Javascript
domReady的实现案例
2016/11/23 Javascript
jquery横向纵向鼠标滚轮全屏切换
2017/02/27 Javascript
原生js实现鼠标跟随效果
2017/02/28 Javascript
Nodejs读取文件时相对路径的正确写法(使用fs模块)
2017/04/27 NodeJs
基于jquery实现多选下拉列表
2017/08/02 jQuery
Mac中安装nvm的教程分享
2017/12/11 Javascript
让axios发送表单请求形式的键值对post数据的实例
2018/08/11 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
2018/11/20 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
2020/10/30 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
2020/11/24 Javascript
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
[05:29]2014DOTA2国际邀请赛 赛后专访:LGDNewbee顺利过关
2014/07/13 DOTA
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
解决python 输出是省略号的问题
2018/04/19 Python
Python小游戏之300行代码实现俄罗斯方块
2019/01/04 Python
深入了解Django中间件及其方法
2019/07/26 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
Python标准库shutil模块使用方法解析
2020/03/10 Python
css3进阶之less实现星空动画的示例代码
2019/09/10 HTML / CSS
香港太阳眼镜网上商店:SmartBuyGlasses香港
2016/07/22 全球购物
Linux常见面试题
2016/10/04 面试题
教师节感想
2015/08/11 职场文书