1. 向服務器請求兩次的情況
-
(1)axios的默認請求頭是Content-Type: application/json,使用這個請求頭會出現向服務器請求兩次的情況;
(2)瀏覽器會首先使用 OPTIONS 方法發起一個預請求,判斷接口是否能夠正常通訊,如果不能就不會發送真正的請求過來,
如果測試通訊正常,則開始真正的請求;瀏覽器對後臺說:我可以請求你嗎? ( ̄ˇ ̄) 後臺說:闊以。( ̄▽ ̄)~* 結果是:發送原有的GET(POST)請求 後臺說:不闊以。(‵﹏′) 結果是:報錯
-
(3)解決方法:設置axios的默認請求頭axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded';
(4)設置之後,後臺不認這個數據格式,所以在傳遞的時候必須先把數據轉換格式;// step1. npm install qs // step2. 在main.js中,引入qs模塊 import qs from 'qs'; // 需要時調用qs.stringify()方法 this.$axios.post('api/login', qs.stringify({ name: 'xxx', password: '********' }).then(res => { }).catch(err => { });