微信+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中防刷IP流量软件影响统计的一点对策
Jul 10 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
Dec 28 Javascript
用JavaScript实现用一个DIV来包装文本元素节点
Sep 09 Javascript
JS特效实现图片自动播放并可控的效果
Jul 31 Javascript
jquery实现的伪分页效果代码
Oct 29 Javascript
JS设置时间无效问题的解决办法
Feb 18 Javascript
如何使用vuejs实现更好的Form validation?
Apr 07 Javascript
vue.js实例todoList项目
Jul 07 Javascript
node app 打包工具pkg的具体使用
Jan 17 Javascript
Vue+Django项目部署详解
May 30 Javascript
JavaScript switch语句使用方法简介
Dec 30 Javascript
JavaScript实现横版菜单栏
Mar 17 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
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
PHP读取大文件的类SplFileObject使用介绍
2014/04/09 PHP
php的闭包(Closure)匿名函数初探
2016/02/14 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
js版本A*寻路算法
2006/12/22 Javascript
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
2015/05/28 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
2017/03/08 Javascript
简单实现vue中的依赖收集与响应的方法
2019/02/18 Javascript
详解vue 路由跳转四种方式 (带参数)
2019/04/28 Javascript
ant design实现圈选功能
2019/12/17 Javascript
Node.js API详解之 dgram模块用法实例分析
2020/06/05 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
五句话帮你轻松搞定js原型链
2020/12/09 Javascript
为什么推荐使用JSX开发Vue3
2020/12/28 Vue.js
详解详解Python中writelines()方法的使用
2015/05/25 Python
pycharm中连接mysql数据库的步骤详解
2017/05/02 Python
详解Django中间件的5种自定义方法
2018/07/26 Python
Python3中的bytes和str类型详解
2019/05/02 Python
python Pillow图像处理方法汇总
2019/10/16 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
推荐一些比较有用的css3新属性
2014/11/11 HTML / CSS
html5仿支付宝密码框的实现代码
2017/09/06 HTML / CSS
HTML5 Canvas 起步(2) - 路径
2009/05/12 HTML / CSS
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
365 Tickets英国:全球景点门票
2019/07/06 全球购物
三星加拿大官方网上商店:Samsung CA
2020/12/18 全球购物
财务会计毕业生自荐信
2013/11/02 职场文书
大学本科毕业生求职信范文
2013/12/18 职场文书
测控技术自荐信
2014/06/05 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书
解决 redis 无法远程连接
2022/05/15 Redis