踩坑系列:获取url中参数时,+号变成空格的问题

前言

在公司的业务中,有如下的业务场景:
在app端中点击活动banner图,跳转到H5端的活动页面;
若用户已在app中登陆,则在跳转到H5端时,携带一个后台下发的参数(autoLogin),表明用于已在app端登陆;
H5页面获得参数后,通过ajax请求后台,获得用户的账户信息;
在此实现了H5端 自动登陆 的功能。

问题

然而,在测试阶段,我们发现有时候出现自动登陆失败的情况。

1.gif

排查

根据 前言 中提及到的业务流程,我们一开始怀疑在自动登陆失败时,app未带上表面已登陆的参数(autoLogin)。
通过 Fiddler.exe 抓包,我们发现发生自动登陆失败时,并非是未从url获取到autoLogin参数,而是在H5端ajax请求用户信息时后台报错。

问题都这么明了,此时不怼后台,更待何时

2.jpg

此处省去联调、扯皮、打脸等过程。。。。。。。

我们经过艰苦卓绝的抓包,发现当自动登陆失败时,H5端提交的autoLogin有一个 空格 !!!
然后对比了后台下发给app的autoLogin参数,H5端提交的autoLogin少了个 加号 !!!

结论

当app打开H5页面时,若autoLogin参数携带 加号 ,
由于浏览器 自动编码 url的机制,将 加号 编码成 空格%20,而不是 %2B
导致H5端获取了一个错误的autoLogin参数,导致自动登陆失败。

解决方法

  • app传参过来的时候,先将请求参数编码。H5端获取后解码。
  • 在确定参数无空格的情况下,H5端将获取的参数用加号替换掉空格。

还有点存疑

url中的 空格会自动编码,但 加号 在某些站点会编码,某些又不会。

3.jpg

这不是第一个坑,也不会是最后一个坑,未完待续......

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,145评论 1 32
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,822评论 0 10
  • 转眼已经七月末了,我的十八岁已经溜得所剩无几,人生最美好最浪漫的少女十八,竟还是过的悄无声息。 ...
    小鹿林夕阅读 507评论 7 1
  • 下载调用时传入文件的字节数组对象和文件名即可
    eye33阅读 360评论 0 1
  • 早上洗漱,一眼就看到了自己的美甲,不禁想起昨天的种种。莫名感到好笑,何必这样刻意。骨子里头的占小便宜的市气跃然,怪...
    超级八婆阅读 210评论 0 0