Golang Go语言中收到get请求后是怎么处理%这样的参数
http://127.0.0.1:2020/cs?&b=222&c=%99
请求参数是这样, 收到后在 golang 里面打印出来是
/cs?a=101&b=222&c=%EF%BF%BD
url 编码也不是很对, %的 url 编码应该是%25
, 然后导致解析c
的值变成了乱码
我现在想把%
当成普通字符串处理, 我要怎么做, gin 和 beego 都存在这样的问题
Golang Go语言中收到get请求后是怎么处理%这样的参数
更多关于Golang Go语言中收到get请求后是怎么处理%这样的参数的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
请求的时候%手动编码掉
http://127.0.0.1:2020/cs?&b=222&c=%99
更多关于Golang Go语言中收到get请求后是怎么处理%这样的参数的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
前端改不了的情况下, 后面能有啥办法解决吗
出现这种问题的原因就是客户端没有做一次编码,导致后端拿到%99 的值被认为是编码后的值
uelencode 这种数据格式就是要求客户端一次编码 服务端一次解码,改框架不知道怎么改,除非你原生地取出 http 中的 body 自己解析
标准库的就是这么按照标准处理的,跟框架没什么关系,除非不用标准库实现。
当然确实可以不用。你如果真的有需求,可以使用 RawQuery 获取原始字符串,自己手工处理一下就好。
RawQuery 怎么用才能获取原始字符串, 用的 beego 里面带的是处理后的, 能否贴一部分代码我试一下
RawQuery 怎么用才能获取原始字符串, 用的 beego 里面带的是处理后的, 能否贴一部分代码我试一下
gin 里没这个问题啊,你成功浪费了我 5 分钟。encoded query: c=%99
你用什么发的请求啊! 我刚试了, 不行啊
谢谢解惑了, 难怪怎么调都不对
ctx.Request.RawQuery
在Golang中处理GET请求时,如果URL中包含像%
这样的百分号编码字符,Go的net/http
包会自动处理URL解码,将百分号编码的参数转换为其原始形式。这通常在处理查询参数(query parameters)时发生。
当你收到一个GET请求时,URL中的查询字符串(即?
后面的部分)会被解析成一个map[string][]string
类型的值,其中键是参数名,值是该参数对应的所有值的切片。这个解析过程包括URL解码,所以像%20
这样的空格编码会被转换为空格字符。
例如,如果你有一个URL http://example.com/?name=John%20Doe&age=30
,在Go的服务器端代码中,你可以通过r.URL.Query()
方法获取查询参数,其中name
的值将是[]string{"John Doe"}
,age
的值将是[]string{"30"}
。
处理这些参数时,你通常不需要担心百分号编码,因为net/http
包已经为你处理了这些细节。但是,如果你需要在应用程序的其他部分手动进行URL编码或解码,可以使用net/url
包中的QueryEscape
和QueryUnescape
函数。
总的来说,在Golang中处理GET请求的百分号编码参数是非常直接和简单的,因为标准库已经为你处理了URL解码的复杂性。