问题
d, err := base64.StdEncoding.DecodeString(param)
if err != nil {
panic(err) // illegal base64 data at input byte
}
golang
从javascript
请求的URL
中读出base64
编码的字符串参数param
,在解码时报错。
通过对比javascript
生成的参数和golang
接收到的参数发现,原数据中的+
被替换为了空格,进而导致解码失败。
解决
在golang
中将空格替换为原来的+
:
d, err := base64.StdEncoding.DecodeString(
strings.Replace(param, " ", "+", -1)
)
这样确实可以解决眼下的问题,但本质问题还是没有解决,因为URL
中的特殊字符不止+
一个。
所以:
除非参数的内容百分百确定没有特殊字符,否则应该使用body
传参。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。