leffss / gowebssh

Webssh implemented by github.com/gorilla/websocket and golang.org/x/crypto/ssh
MIT License
80 stars 25 forks source link

还是关于前后端数据交互问题 #4

Closed wenbingzhang closed 3 years ago

wenbingzhang commented 3 years ago

今天发现"%"有问题,经过我的测试发现实际不需要转换也是正常的,也许是我测试的不够详细。

func UrlQueryUnescape(old string) (string, error) {
    return old, nil
    // return url.QueryUnescape(strings.ReplaceAll(old, "+", "%2b"))
}
leffss commented 3 years ago

今天发现"%"有问题,经过我的测试发现实际不需要转换也是正常的,也许是我测试的不够详细。

func UrlQueryUnescape(old string) (string, error) {
  return old, nil
  // return url.QueryUnescape(strings.ReplaceAll(old, "+", "%2b"))
}

是我大意了,没有测试完全:

func UrlQueryUnescape(old string) (string, error)  {
    // 客户端发送过来的数据是 url 编码过的,这里需要解码
    // url.QueryUnescape 会将'+'加号转换为' '空格。
    // 必须先替换 % ,再替换 +
    return url.QueryUnescape(strings.ReplaceAll(strings.ReplaceAll(old, "%", "%25"), "+", "%2b"))
}

1