经过测试和总结,有以下几点:
使用hash模式和history模式都有需要注意的地方去配置:
hash模式
hash模式是默认的,在连接上自动生成的#,需要注意的是安卓会在打开新页面时候,自动截取掉# 后面的参数,之前的微信支付调用授权时,hash模式下安卓系统页面跳转回来都不会刷新,导致无法获取新链接中的参数。此处注意的是不能使location.search不能为空,也就是需要有?参数即可解决这个问题。
history模式
history模式下,需要服务器做调整,具体参考vue-router.js对此处的解释:
此时因为ios系统下的每一个页面都是初始加载时的页面,所以ios只用做一次签名。一般在程序入口处main.js中记录下初始路径,在做签名时使用这个路径即可,安卓的仍需要在每一次使用时做签名。
务必和后端做好沟通工作,确认前端传的链接编码操作和解码是一致的。之前项目中出现过后端有解码链接的操作,而我前端传参却没有对链接编码,也出现过前端编码后端未编码导致签名失败的问题。