乐趣区

关于go:illegal-base64-data-at-input-byte

问题

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 传参。

退出移动版