请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么需要对 url 做 2 次转义呢

在处理url参数小节中, 为什么需要对 url 做 2 次转义呢

function encode(val: string): string {
  return encodeURIComponent(val)
    .replace(/%40/g, '@')
    .replace(/%3A/gi, ':')
    .replace(/%24/g, '$')
    .replace(/%2C/gi, ',')
    .replace(/%20/g, '+')
    .replace(/%5B/gi, '[')
    .replace(/%5D/gi, ']')
}

这样转一下是不是把 encode 了的 url 又 decode 了呢
我试过不做 replace 这些字符, 在 express 和前端 也是一样的结果.

正在回答

1回答

ustbhuangyi 2019-05-14 15:42:04

效果是一样的,这个是为了保持和官网 axios 一样的参数处理规则,它们认为这些特殊字符不应该被转义,但我也没找到相关的规范。当然 axios 也可以支持用户自定义参数处理规则,未来我们也会支持这个 feature。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕UI0101873 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-05-14 17:33:54
  • 我做了下试验,axios默认的转义规则跟课程中不一样,axios默认没有对 : $ , [ ] 做转义。但对@、+、' '空格做了转义。
    
    ( @ => %40) 
    ( + => $2B)  
    ( 空格 => + )
    回复 有任何疑惑可以回复我~ 2020-09-07 22:22:46
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信