为什么需要对 url 做 2 次转义呢
来源:5-3 处理请求 url 参数 - 实现 url 参数处理逻辑

慕UI0101873
2019-05-14
在处理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回答
-
效果是一样的,这个是为了保持和官网 axios 一样的参数处理规则,它们认为这些特殊字符不应该被转义,但我也没找到相关的规范。当然 axios 也可以支持用户自定义参数处理规则,未来我们也会支持这个 feature。
022020-09-07
相似问题