传参base64时的+号变空格问题

2023-03-28 16:08:29 浏览数 (1)

问题发生

上上周,看到一位老哥找我们组同事联调接口,不知道是什么问题,两人坐一起搞了快1个小时,看起来好像有点复杂。

突然,老哥发出一声卧槽,"我传参里的 号,到你这怎么变成了空格!",这个声音很大,我明显的听到了,很快,我就大概Get到了他们的问题点。

我猜测他们遇到的问题大概如下:

  1. 我们的接口协议上,都会将请求数据做一次base64编码,然后放到data参数上。
  2. 然后某些数据做base64编码后有 ,如{"notes":"代码"}base64编码为eyJub3RlcyI6IuS7o eggSJ9Cg==
  3. 然后直接拼到data参数上,即data=eyJub3RlcyI6IuS7o eggSJ9Cg==,组织成http请求发出。

如果写成等价的curl,就是这样:

代码语言:javascript复制
$ curl http://localhost:8080/send -d 'data=eyJub3RlcyI6IuS7o eggSJ9Cg=='
复制代码

写个测试接口调试下看看,如下:

这就是他们遇到的问题, 会变成空格,这个坑其实蛮容易踩到,我自己刚工作时就踩到过这个坑,也多次看到或听到别人同踩此坑

0 人点赞