axios發送兩次請求,有一次爲options

問題:在Vue中用axios的默認請求頭是Content-Type: application/json,發起請求時,axios會發送兩次,一次爲options 類型。

原因:瀏覽器會首先使用 OPTIONS 方法發起一個預請求,判斷接口是否能夠正常通訊,如果不能就不會發送真正的請求過來,如果測試通訊正常,則開始真正的請求。

解決:設置axios的默認請求頭axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded';

但後臺不認這個數據格式,需轉換數據格式,用到qs模塊

在main.js中引入qs模塊

import qs from 'qs

然後弄qs原型

Vue.prototype.$qs = qs

這樣我們就可以在axios post請求的時候將我們傳遞的數據轉換成後臺認識的格式

this.$axios
     .post("http://xxx/", 
        this.$qs.stringify(postData)
      ).then(data => {
        if (data.data.status != 200) {
          //xxx
        } else {
          //xxx
        }
      });

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章