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

2017-06-20 09:39:34 +08:00
WildCat  WildCat

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

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

7824 次点击
所在节点   Ruby on Rails  Ruby on Rails
13 条回复
liuzhedash
liuzhedash
2017-06-20 09:43:47 +08:00
android 下微信浏览器使用的是 x5 内核,ios 下是 safari,这两者在 weixinjs 校验签名的时候相同页面的 URL 是有差别的
oott123
oott123
2017-06-20 11:15:40 +08:00
这个坑严格地说是 pushState 引起的。你搜索的方向偏了一点,所以没找到……
WildCat
WildCat
2017-06-20 12:43:28 +08:00
@oott123 pushState 是 Android 的坑。不是 iOS 的坑
WildCat
WildCat
2017-06-20 12:43:52 +08:00
@liuzhedash 检查过签名用的 URL 了,没问题
oott123
oott123
2017-06-20 13:12:13 +08:00
@WildCat #3 两者都有,而且坑深不同。
icedx
icedx
2017-06-20 16:30:57 +08:00
按理说 iOS 的浏览器应该更稳定才对
hiro0729
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
momocraft
2018-08-31 17:12:42 +08:00
这个问题在最新版微信仍然存在,仍然没有看到阳光 lol
WildCat
WildCat
2018-08-31 18:52:05 +08:00
@momocraft 哇 现在用 Rails 的人真的是越来越少了。。。
momocraft
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
WildCat
2018-08-31 19:31:14 +08:00
@momocraft 是微信浏览器的坑,传统的解决办法就是不用 history push api,还是用 # 做 URL 路由。

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

我在 Ruby China 上提过这个问题,回答也很有质量。
momocraft
momocraft
2018-09-04 19:29:49 +08:00
@WildCat 微信上班不方便开,推上佛你了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/369715

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX