axios get请求参数含特殊字符的编码问题
问题描述:get请求,传参格式“2020-01-01 00:00:00” 直接传的情况“ ”被转义成“+”
(2020-01-01+00:00:00),将“ ”转义成“%20”后传参被转成“%2520”(2020-01-01%252000:00:00)。 axios将“%”转义为“%25”。
期望传值 2020-01-01%2000:00:00
问题产生原因:axios会对参数中的特殊字符进行转义
解决方案:将参数拼接在url上避免axios对params进行处理。可在请求拦截器中统一处理
service.interceptors.request.use(
config => {
// 避免对get请求参数的特殊字符进行转译
let url = config.url
if (config.method === 'get' && config.params) {
url += '?'
let keys = Object.keys(config.params)
for (let key of keys) {
// key对应的value无值,不进行拼接
if(config.params[key]) {
url += `${key}=${encodeURIComponent(config.params[key])}&`
}
}
url = url.substring(0, url.length - 1)
config.params = {}
}
config.url = url
return config
},
error => {
Promise.reject(error)
}
)