ant design pro 用 request 封装 axios 后 get 方法请求接口设置了headers[‘Content-Type‘]不起作用的问题

在axios封装请求方法中设置了请求头,request headers中没有出现

service.interceptors.request.use(
    config => {
        config.data = JSON.stringify(config.data);
        config.headers['Authorization'] = getToken();
        config.headers['Content-Type'] = "application/json;charset=utf-8";
        
        return config;
    },
    error => {
        return Promise.reject();
    }
);

原因:npm下axios的源码中,当未设置requestData的时候会删掉Content-Type的设置

// 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);
    }
  });
}

解决方法:request.js

在request 拦截的地方加入下面代码

// 随便写个值 绕过if判段
if (config.method === 'get' || !config.data) {
  config.data = {}
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注