微信+angularJS的SPA應(yīng)用中用router進(jìn)行頁(yè)面跳轉(zhuǎn),jssdk校驗(yàn)失敗問(wèn)題解決
今天偶然的把微信jssdk的debug打開(kāi)后,發(fā)現(xiàn)調(diào)試信息總是提示簽名錯(cuò)誤,感情前兩天api的"偶爾"不生效,不是因?yàn)檫€沒(méi)執(zhí)行代碼,而是因?yàn)楹灻麤](méi)正確?。?,這就是個(gè)100%可以重現(xiàn)的錯(cuò)誤
但只要這個(gè)SPA剛刷新過(guò),或加載完后中途沒(méi)有跳轉(zhuǎn),,簽名就會(huì)是正確的。
而當(dāng)路由發(fā)生改變,我們對(duì)新"跳轉(zhuǎn)"的頁(yè)面重新簽名之后,卻出現(xiàn)了簽名錯(cuò)誤,而我們的簽名明明是正確的,把各種參數(shù)拿去微信JS簽名校驗(yàn)工具(http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign)去比對(duì)是一樣的!
后面重大發(fā)現(xiàn)。。。其實(shí)
只要加載SPA入口頁(yè)面的時(shí)候簽名一次就行了,因?yàn)槲⑿拍脕?lái)簽名的URL好像只認(rèn)這個(gè)SPA第一個(gè)加載的頁(yè)面的URL。。。window.location.href跳轉(zhuǎn)其實(shí)就相當(dāng)又加載了一次SPA
曾以為路由跳轉(zhuǎn)了,就應(yīng)該拿新的url去重新簽名,卻恰恰因?yàn)檫@點(diǎn),把簽名校驗(yàn)給搞出錯(cuò)了。。
所以解決方案就是:
只簽名第一個(gè)加載的頁(yè)面就行了,用ui-router進(jìn)行的跳轉(zhuǎn),似乎只是改了地址。。而這個(gè)地址的修改。。微信的簽名似乎不認(rèn)。。他就認(rèn)第一個(gè)加載的頁(yè)面的URL。
通過(guò)此文,希望能幫助到遇到此問(wèn)題的朋友,謝謝大家對(duì)本站的支持!
- JavaScript正則表達(dá)式實(shí)現(xiàn)注冊(cè)信息校驗(yàn)功能
- javascript使用正則表達(dá)式實(shí)現(xiàn)注冊(cè)登入校驗(yàn)
- js實(shí)現(xiàn)登錄注冊(cè)框手機(jī)號(hào)和驗(yàn)證碼校驗(yàn)(前端部分)
- JavaScript 完成注冊(cè)頁(yè)面表單校驗(yàn)的實(shí)例
- JavaScript注冊(cè)時(shí)密碼強(qiáng)度校驗(yàn)代碼
- js簡(jiǎn)單實(shí)現(xiàn)用戶注冊(cè)信息的校驗(yàn)代碼
- 攔截JSP頁(yè)面,校驗(yàn)是否已登錄詳解及實(shí)現(xiàn)代碼
- js實(shí)現(xiàn)注冊(cè)頁(yè)面校驗(yàn)功能
相關(guān)文章
AngularJS模糊查詢功能實(shí)現(xiàn)代碼(過(guò)濾內(nèi)容下拉菜單排序過(guò)濾敏感字符驗(yàn)證判斷后添加表格信息)
最近做項(xiàng)目遇到這樣的需求,要求添加球員的功能,具體樣式?jīng)]做具體要求,下面小編給大家?guī)?lái)了AngularJS模糊查詢功能實(shí)現(xiàn)代碼(過(guò)濾內(nèi)容下拉菜單排序過(guò)濾敏感字符驗(yàn)證判斷后添加表格信息),感興趣的朋友一起看看吧2017-10-10
AngularJS中$injector、$rootScope和$scope的概念和關(guān)聯(lián)關(guān)系深入分析
這篇文章主要介紹了AngularJS中$injector、$rootScope和$scope的概念和關(guān)聯(lián)關(guān)系,結(jié)合實(shí)例形式較為深入的分析了$injector、$rootScope和$scope的概念、功能、使用方法及相互之間的關(guān)系,需要的朋友可以參考下2017-01-01
基于AngularJS實(shí)現(xiàn)iOS8自帶的計(jì)算器
這篇文章的主要內(nèi)容是使用angularjs實(shí)現(xiàn)一個(gè)計(jì)算器,是一個(gè)仿iOS8風(fēng)格的計(jì)算器,功能基本和iOS自帶的計(jì)算器是一致的。有需要的朋友們可以參考借鑒。2016-09-09
AngularJS使用ui-route實(shí)現(xiàn)多層嵌套路由的示例
這篇文章主要介紹了AngularJS使用ui-route實(shí)現(xiàn)多層嵌套路由的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
詳解AngularJS中module模塊的導(dǎo)入導(dǎo)出
本文給大家介紹angularjs中module模塊的導(dǎo)入導(dǎo)出,涉及到angularjs module相關(guān)知識(shí),對(duì)angularjs module感興趣的朋友一起看看吧2015-12-12

