在使用axios get请求方式时请求接口返还中文乱码,设置content-type尝试解决时,发现不起做用,查了一些资料发现get请求时,axios内部在判断get请求时给删掉了ios
/ Add headers to the request if ('setRequestHeader' in request) { utils.forEach(requestHeaders, function setRequestHeader(val, key) { if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { // Remove Content-Type if data is undefined delete requestHeaders[key]; } else { // Otherwise add header to the request request.setRequestHeader(key, val); } }); }
给出的解决方法是为data 赋值以免axios给删除掉,以下:axios
// http request 拦截器 axios.interceptors.request.use( (config) => { config.params = config.params || {} if (!config.params._v) { // eslint-disable-line config.params._v = String(Math.random()).slice(0, 10) // eslint-disable-line } if (typeof window === 'undefined') { config.url = config.url.replace(/^https/, 'http') } if (config.method === 'get') { config.data = true } config.headers = { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', } return config }, error => Promise.reject(error) )
虽然成功设置了请求头,可是中文乱码暂未解决。最后,使用自定义方法transformResponse暂时解决,若有更好的解决方式烦请留言,谢谢。app