这个问题折腾了我和该项目的后台同事好久,记录一下
正常流程:
图书馆公众号挂的我们项目的H5链接,公众号菜单点击后先经过后台,后台拿到相关参数跳转到我的页面地址把参数带过来,我获取到参数和用户登录填写的账户密码一起调用接口,后续再有其它的交互
问题反馈:
图书馆的一位读者进到H5页面后,注册,登录都不行,看了后台日志是参数没传过去,我们用公司同事手机关注该公众号都能正常走流程,只有该读者的手机不行
解决问题过程:
1.怀疑是参数的字符导致,后台就把跳转我地址带过来的参数进行了编码,因为我们没有测试环境只能叫该读者再测试一下,结果还是不行
2.排查是否是传参的方式有问题,不能用?传参,我们就改成了/拼接参数,让那位读者测试还是不可以
3.排查是否是因为vue项目的路由中携带了#原因,我就改了路由模式,这次不好意思再让那位读者测试了(是一位年纪比较大的读者,不肯加微信,都是技术部的同事打电话让帮忙测试,汗颜!)
4.因为这个问题只有一个人出现,就怀疑是 微信 版本的问题,对比了下其它手机型号的微信版本,测试也是没问题,又要来了手机型号,手机型号是特别低版本的ios,ios12.5.5,问了其它同事,万幸有位小姐姐家里有闲置的iphone6是ios12.5.5的,第二天带过来测试,奇葩的是竟然正常的,我和同事顿时无语。
5.现在连唯一的希望(测试环境)都没有了,同事在腾讯的云手机上花了10块大洋,复现出了bug,在ios12.5.5的版本下,我们基本判断是手机型号的原因了
6.拿着手上的iphone6,我们把微信卸载掉重装,然后用本地的地址测试,内网ip,bug复现了,我们判断是https的问题,因为公众号测试是正常的,ip就会重现bug,后台同事还考虑到一个问题是不是我页面的名字触及到浏览器的安全策略啥的,因为我页面的名字和路由地址都是bind,我就把这个也给改掉了,后台同事把nginx的https跳转路径也给调整了
7.再次让那位读者测试,下午反馈结果是可以了,可以正常登录
总结:
https在ios12.5.5及以下版本的微信内置浏览器上参数会被拦截
h5页面名称和路由尽量不要用敏感词汇命名
遇到问题一步步排查,这个不成功再换下一个,不断地复现和测试,总会干掉bug的