問題
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傳參。