golang踩坑之url不会decode问题
踩坑记录
不知道小伙伴有没有遇到这样的情况,同样一个http请求(带有重定向url的api),在java中调用后返回的结果是预期内,但是在golang中却会报错或者与预期不符。这是为什么呢?
小编的场景是这样的:
比如这个:http://localhost:/api/test?id=1&redirectUrl=http%3A%2F%2Fhttpbin.org%2Fredirect%2F3,小编有个专门的白名单过滤url,把http://httpbin.org/redirect/3配置进去。
然后在java里调用和postman调用后,结果返回的都是预期内的,但是golang中调用之后就提示不在白名单
小编经过详细的对比,研究发现,原来java中的url会自动encode成正常的url,而go不会,需要手动encode
引入"net/url"包,decode之后再传入就可以了
redirectUriDecode, err := url.QueryUnescape(redirectUrl)if err != nil {return nil, err}