illegal base64 data at input byte

2年前 (2022) 程序员胖胖胖虎阿
323 0 0

问题

d, err := base64.StdEncoding.DecodeString(param)
if err != nil {
    panic(err) // illegal base64 data at input byte
}

golangjavascript请求的URL中读出base64编码的字符串参数param,在解码时报错。

通过对比javascript生成的参数和golang接收到的参数发现,原数据中的+被替换为了空格,进而导致解码失败。

解决

golang中将空格替换为原来的+

d, err := base64.StdEncoding.DecodeString(
    strings.Replace(param, " ", "+", -1)
)

这样确实可以解决眼下的问题,但本质问题还是没有解决,因为URL中的特殊字符不止+一个。

所以:

除非参数的内容百分百确定没有特殊字符,否则应该使用body传参。

版权声明:程序员胖胖胖虎阿 发表于 2022年10月7日 上午2:56。
转载请注明:illegal base64 data at input byte | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...