axios的get請求無法設置Content-Type


最近在與后端的項目對接中,接口工具使用了axios這個東西。怎么說那 ,反正有很多坑,在后端的請求中要設置GET 請求中要設置header中的Content-Typeapplication/json; charset=utf-8

我目視了兩秒鍾很簡單的嘛

var $http  = axios.create({
  baseURL: url,
  headers: {
    'Content-Type': 'application/json; charset=utf-8'
  }
  ...
})

  

灑灑水啦 ,是不是很容易

然后。。然后。。我艹what fuck,一看請求中header中沒得這個玩意兒,但是除了Content-Type都是可以設置的

此時此刻一萬句mmp要將,百度一大推也都沒啥用

然后本人就去讀了一哈源碼,npm包中的源碼 axios/lib/xhr.js,寫了什么,我艹 他寫了什么

118------129行

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

  

然后看這個if判段, 嗶了狗了

然后就有那么幾個解決辦法,下面我寫一寫哈

  • 方法一
//修改這段代碼
    // 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);
        //}
      });
    }

  

好了,行了行了,現在可以了

  

  • 方法二 
    我們不能隨隨便便改人家的npm包啊,萬一下次別人安裝的時候那不是又要去改,咋辦呢,看下面這個方法 
var $http
// 添加一個新的axios實例
$http = axios.create({
  baseURL: url,
  headers: {
    'Content-Type': 'application/json; charset=utf-8'
  }
})
// 添加請求攔截器
$http.interceptors.request.use(function (config) {
  // 在發送請求之前做些什么
  // 隨便寫個值 繞過if判段
  if (config.method == 'get') {
    config.data = true
  }
  config.headers['H-TOKEN'] = '111'
  return config;
}, function (error) {
  // 對請求錯誤做些什么
  return Promise.reject(error);
});

  

現在哥哥告訴你,隨便在get請求中設置header那還不是簡簡單單的事情

  

axios這么做的原因, 是因為GET請求本身是不需要Content-type,塔屬於簡單請求

 

原文作者:echone_wenqian

原文地址:https://blog.csdn.net/qq_24729895/article/details/80367460


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM