在使用axios get请求方式时请求接口返还中文乱码,设置content-type尝试解决时,发现不起作用,查了一些资料发现get请求时,axios内部在判断get请求时给删掉了
/ 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给删除掉,如下:
// 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暂时解决,如有更好的解决方式烦请留言,谢谢。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。