zoukankan      html  css  js  c++  java
  • [转]关于微信JSSDK中遇到的“invalid signature”的天坑

    作者:MapleShaw
    链接:https://juejin.im/post/5a3cc5ae5188252103347221
    来源:掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    wx.config()这块网上的信息太多了,基本的配置这里绕过,直接说这次遇到的最坑的问题 ---- invalid signature

    排查了各种情况总是找不出原因,而且神奇的是在安卓上可以正常获取位置,就只是在ios上一直“invalid signature”,打印出来的当前url跟签名的url也明明是一致的,为什么还是签名有问题呢!!???

    页面的结构如下:

    SPA:

    • 页面A
    • 页面B

    非常简单,整个应用从A进入,然后跳转到B,B需要获取位置,我也只是在B里面配置微信的JSSDK,然后就遇到了前面所说的问题。然后!!关键来了!!在某一次调试的时候,我就直接从B页面刷新了,然后就可以了!!!!!What the fuk?!!

    从B刷新加载的每一次都是那么丝滑,而从A到B,每一次都被枪毙,所以抱着这个问题,我来到了这个新世界 ---- 关于html5-History模式在微信浏览器内的问题

    原来,是酱紫?!!

    IOS:微信IOS版,微信安卓版,每次切换路由,SPA的url是不会变的,发起签名请求的url参数必须是当前页面的url就是最初进入页面时的url

    Android:微信安卓版,每次切换路由,SPA的url是会变的,发起签名请求的url参数必须是当前页面的url(不是最初进入页面时的)

    坑爹啊!亏我把请求签名的url跟当前页面的url(location.href)对比明明是一样的!

     

    解决方案:

    全局存储进入SPA的url(window.entryUrl),Android不变,依旧是获取当前页面的url,IOS就使用window.entryUrl,然后签名,done!

    // 记录进入app的url,后面微信sdk
    if (window.entryUrl === '') {
        window.entryUrl = location.href.split('#')[0]
    }
    // 进行签名的时候
    url: isAndroid() ? location.href.split('#')[0] : window.entryUrl

    题外话:貌似看到有人在处理微信分享的时候也有类似的问题



  • 相关阅读:
    注释神器
    Q币直充-迅银渠道商(php 面向对象类)
    rsync 同步多台服务器项目目录
    wdcp 打开网页显示 Apache 2 Test Page powered by CentOS -- 来自辉哥博客
    elasticsearch批量修改,批量更新某个字段
    Ik分词器没有使用---------elasticsearch-analysis-ik 5.6.3分词问题
    spring-boot-starter-data-elasticsearch 整合elasticsearch 5.x详解
    FastJson--SerializerFeature.PrettyFormat 如何实现格式化源码查看
    由Premature end of Content-Length delimited message body因发的问题排查
    JVM的YoungGC日志查看
  • 原文地址:https://www.cnblogs.com/sungong1987/p/12384322.html
Copyright © 2011-2022 走看看