关于encode的转义?
来源:5-2 处理请求 url 参数 - buildURL 函数实现

慕粉0814301592
2019-05-12
黄老师,有一个问题想要请问一下:
function encode(val) {
return encodeURIComponent(val).
replace(/%40/gi, '@').
replace(/%3A/gi, ':').
replace(/%24/g, '$').
replace(/%2C/gi, ',').
replace(/%20/g, '+').
replace(/%5B/gi, '[').
replace(/%5D/gi, ']');
}
axios是这样做encode的,但是我并不了解它遵照的是哪一份规范?似乎对于params的哪些东西需要转义,哪些东西不需要的问题,好像并没有一个统一的意见?
https://github.com/axios/axios/issues/1443 类似这样的issue也有不少,许多人需要自定义paramsSerializer 来解决问题。
我在mdn上好像也没找到比较确切的答案? 能请黄老师稍稍解释下吗?
写回答
1回答
-
其实这块就是遵循了 axios 默认的一套转义规则,至于规范,我也没有找到。不过正如你说的 axios 支持了自定义 paramsSerializer 来让用户自己定义规则,这块在后面的扩展章节会实现。
我的一个猜测是 axios 团队认为这些特殊字符是可以直接放在 url 上的,不需要被转义。112019-05-15
相似问题