微信授权回调时,回调地址中原有参数丢失

近日在做登录微服务的时候,需要做微信授权认证。出现各种坑,(有坑才有成长)
之前一直是只带有一个参数, 没有发现任何问题,今天在测试项目一些功能时,发现授权后的回调地址中,丢失了原有的参数。 授权页时显示回调地址中参数有2个,当点击确认授权按钮后,参数剩了一个了。网上没有查到相关问题解决方案,文档上也没有明确记录.。经多方测试,老大指点后,问题终于得到解决。现记录于下,以作错误的经验总结,也给类似问题的同行一个简单的方案或者思路。

先看下服务器抓到的日志信息:

 

 

上图明显的可以看出,授权后参数剩下一个了;为什么回调地址经过编码后,还会出现这样的问题呢? 刚一开始还以为是微信的问题, 限制传多个参数。后来想想不可能这么low, 后来老大说,你查看下你的编码。然后就统一检查了所有需要编码的地方,都经过编码了,但是还存在这样的问题.。但是有一个地方,就是在拼接的时候, 为了省事,先进行了拼接,后编码。这时,将统一编码改为分布编码,然后再拼接。OK,问题解决。看来有时候真是不能偷懒呀!


看下错误的写法:

正确写法:

 

前端写法:

location.href = "url?"+encodeURIComponent("lat="+lat+"&lng="+lng+"&addr="+addressEnd);

 

posted @ 2018-05-21 11:32  rachelch  阅读(889)  评论(0)    收藏  举报