请教 url encode 问题

查看 63|回复 4
作者:chaleaochexist   
https://192.168.1.1:25505/api/v1/query?query=sum(a:b:c:d:e{a="", b="c"}) by (namespace)
用 postman 转成 curl 是这样子的
curl --location --globoff 'https://192.168.1.1:25505/api/v1/query?query=sum(a%3Ab%3Ac%3Ad%3Ae{a%3D%22%22%2C%20b%3D%22c%22})%20by%20(namespace)'
可以看到对参数部分编码了:
[ol]
  • 冒号 :
  • 等于号 =
  • 引号 "
  • 逗号 ,
    [/ol]
    就是没有 encode 括号()和大括号{}
    我的问题是: 为啥没有 encode 大小括号?

    encode, 括号, curl, bearer

  • lzgshsj   
    有什么问题,你自己在控制台 encodeURI 一下就知道了。括号本来就不需要 encode 。
    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI
    MegatronKing   
    这是个好问题,我也遇到过。比如 * 号,RFC 规范里面没有明确定义是否需要 encode 导致不同版本的实现不相同,有的库会 encode 有的不会,很容易因为前后端不一致出现问题。
    subfire   
    为什么要 encode? 现代浏览器早已支持了 URL 中有 Unicode
    5200   
    要不你直接 base64 一下,https://192.168.1.1:25505/api/v1/query?query=base64 码,
    get 方式记得挺多问题的,复杂编码最好用 post 或者 head 头试试。
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部