The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
xpyusrs

golang 收到 get 请求后是怎么处理%这样的参数

  •  
  •   xpyusrs · Apr 6, 2022 · 2988 views
    This topic created in 1546 days ago, the information mentioned may be changed or developed.
    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 都存在这样的问题

    13 replies    2022-04-06 22:33:40 +08:00
    jxxz
        1
    jxxz  
       Apr 6, 2022
    请求的时候%手动编码掉
    http://127.0.0.1:2020/cs?&b=222&c=%2599
    xpyusrs
        2
    xpyusrs  
    OP
       Apr 6, 2022
    @jxxz 前端改不了的情况下, 后面能有啥办法解决吗
    jxxz
        3
    jxxz  
       Apr 6, 2022
    出现这种问题的原因就是客户端没有做一次编码,导致后端拿到%99 的值被认为是编码后的值
    uelencode 这种数据格式就是要求客户端一次编码 服务端一次解码,改框架不知道怎么改,除非你原生地取出 http 中的 body 自己解析
    janxin
        4
    janxin  
       Apr 6, 2022
    标准库的就是这么按照标准处理的,跟框架没什么关系,除非不用标准库实现。

    当然确实可以不用。你如果真的有需求,可以使用 RawQuery 获取原始字符串,自己手工处理一下就好。
    xpyusrs
        5
    xpyusrs  
    OP
       Apr 6, 2022
    RawQuery 怎么用才能获取原始字符串, 用的 beego 里面带的是处理后的, 能否贴一部分代码我试一下
    xpyusrs
        6
    xpyusrs  
    OP
       Apr 6, 2022
    @janxin RawQuery 怎么用才能获取原始字符串, 用的 beego 里面带的是处理后的, 能否贴一部分代码我试一下
    dcalsky
        7
    dcalsky  
       Apr 6, 2022
    gin 里没这个问题啊,你成功浪费了我 5 分钟。encoded query: c=%99
    xpyusrs
        8
    xpyusrs  
    OP
       Apr 6, 2022
    @dcalsky 你用什么发的请求啊! 我刚试了, 不行啊
    GeruzoniAnsasu
        9
    GeruzoniAnsasu  
       Apr 6, 2022
    我来破案:

    %EF%BF%BD

    U+FFFD 这个字符
    也就是



    喜闻乐见
    GeruzoniAnsasu
        10
    GeruzoniAnsasu  
       Apr 6, 2022
    补一张图:

    GeruzoniAnsasu
        11
    GeruzoniAnsasu  
       Apr 6, 2022   ❤️ 1
    不够直白,再补一张






    你的 %99 根本就还没出框架就被换成问号了,还搁这 %99 呢
    xpyusrs
        12
    xpyusrs  
    OP
       Apr 6, 2022
    @GeruzoniAnsasu 谢谢解惑了, 难怪怎么调都不对
    janxin
        13
    janxin  
       Apr 6, 2022
    @xpyusrs ctx.Request.RawQuery
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5252 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 97ms · UTC 05:47 · PVG 13:47 · LAX 22:47 · JFK 01:47
    ♥ Do have faith in what you're doing.