博客 / 詳情

返回

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

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.