2

在使用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暂时解决,如有更好的解决方式烦请留言,谢谢。


泽浩沉
288 声望18 粉丝

希望自己能够自由地对各种事情发表自己的意见


引用和评论

0 条评论