V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
WildCat
V2EX  ›  Ruby on Rails

Turbolinks 会导致微信网页在 iOS 上点击链接时出现 invalid signature 错误, Android 和开发者工具则正常

  •  
  •   WildCat · 2017-06-20 09:39:34 +08:00 · 7752 次点击
    这是一个创建于 2717 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在做微信网页开发,用的是 wechat 这个 gem。iOS 上,目前生成的网页,首页没问题,一旦点击一次链接就会出现 invalid signature 错误。

    搜索了很多相关关键词,甚至关于 React 的微信网页开发的。都没找到什么可以利用的资料。 很想用 turbolinks,但是现在看来只能关闭了。奇怪的是为什么 Android 正常 iOS 不正常,按理说 iOS 的浏览器应该更稳定才对。

    13 条回复    2018-09-04 19:29:49 +08:00
    liuzhedash
        1
    liuzhedash  
       2017-06-20 09:43:47 +08:00
    android 下微信浏览器使用的是 x5 内核,ios 下是 safari,这两者在 weixinjs 校验签名的时候相同页面的 URL 是有差别的
    oott123
        2
    oott123  
       2017-06-20 11:15:40 +08:00
    这个坑严格地说是 pushState 引起的。你搜索的方向偏了一点,所以没找到……
    WildCat
        3
    WildCat  
    OP
       2017-06-20 12:43:28 +08:00
    @oott123 pushState 是 Android 的坑。不是 iOS 的坑
    WildCat
        4
    WildCat  
    OP
       2017-06-20 12:43:52 +08:00
    @liuzhedash 检查过签名用的 URL 了,没问题
    oott123
        5
    oott123  
       2017-06-20 13:12:13 +08:00   ❤️ 1
    @WildCat #3 两者都有,而且坑深不同。
    icedx
        6
    icedx  
       2017-06-20 16:30:57 +08:00 via Android
    按理说 iOS 的浏览器应该更稳定才对
    hiro0729
        7
    hiro0729  
       2017-06-20 16:42:00 +08:00
    要你点击链接后输出下当前的浏览器的 url 是否改变, 微信签名需要后台签名的 url 和当前调用 jssdk 的页面的 url 一致, 才能生效的
    http://qydev.weixin.qq.com/wiki/index.php?title=%E5%BE%AE%E4%BF%A1JS-SDK%E6%8E%A5%E5%8F%A3#.E9.99.84.E5.BD.956-.E5.B8.B8.E8.A7.81.E9.94.99.E8.AF.AF.E5.8F.8A.E8.A7.A3.E5.86.B3.E6.96.B9.E6.B3.95

    一般 url 后面的#后的内容改变是无所谓的, 如果 url 的?后面的 querystring 变化了, 微信就不认原签名了
    momocraft
        8
    momocraft  
       2018-08-31 17:12:42 +08:00
    这个问题在最新版微信仍然存在,仍然没有看到阳光 lol
    WildCat
        9
    WildCat  
    OP
       2018-08-31 18:52:05 +08:00
    @momocraft 哇 现在用 Rails 的人真的是越来越少了。。。
    momocraft
        10
    momocraft  
       2018-08-31 19:11:55 +08:00
    @WildCat 这个坑应该不止存在于 rails/turbolinks。SPA 开发者中也有讨论,如 https://github.com/Chooin/wechat-spa#%E5%BE%AE%E4%BF%A1%E5%88%86%E4%BA%AB
    WildCat
        11
    WildCat  
    OP
       2018-08-31 19:31:14 +08:00
    @momocraft 是微信浏览器的坑,传统的解决办法就是不用 history push api,还是用 # 做 URL 路由。

    18 年很难见到 Rails 开发者了,不妨加个微信?
    WildCat
        12
    WildCat  
    OP
       2018-08-31 19:38:27 +08:00
    @momocraft https://ruby-china.org/topics/33264

    我在 Ruby China 上提过这个问题,回答也很有质量。
    momocraft
        13
    momocraft  
       2018-09-04 19:29:49 +08:00
    @WildCat 微信上班不方便开,推上佛你了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2829 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:13 · PVG 23:13 · LAX 07:13 · JFK 10:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.