首页 > 其他分享 >传参base64时的+号变空格问题

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

时间:2023-03-25 19:33:10浏览次数:42  
标签:传参 编码 String urlencode base64 空格 data 号变

原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明。

问题发生

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

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

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

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

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

$ curl http://localhost:8080/send -d 'data=eyJub3RlcyI6IuS7o+eggSJ9Cg=='

写个测试接口调试下看看,如下:
bug
这就是他们遇到的问题,+会变成空格,这个坑其实蛮容易踩到,我自己刚工作时就踩到过这个坑,也多次看到或听到别人同踩此坑

标签:传参,编码,String,urlencode,base64,空格,data,号变
From: https://www.cnblogs.com/codelogs/p/17255425.html

相关文章