Vue2.0 搭配 axios

由于vue-resourece官方停止維護,所以轉向了axios,github上一萬三千多的star, 足以證明其強大。
一個登錄的場景,用axios發送post請求去登錄,能成功返回數據,但是用作權限驗證的cookie就是沒有保存,經查閱,axios 默認不發送cookie,跨域也是一個原因,需要全局設置

axios.defaults.withCredentials = true 

相關閱讀:withCredentials

將axios發送的數據格式轉換為form-data格式

//npm install axios的時候默認會安裝qs
// qs相關的問題請搜索"nodejs qs"或者看這里https://www.npmjs.com/package/qs
import qs from 'qs';

// 將請求數據轉換為form-data格式
// 這里不用qs,用FormData也可以,不贅述
var data = qs.stringify({
  currentPage: "0",
  pageSize: "10",
  type: "1",
});

axios.post('/url', data)
.then(function (response) {
    //
})
.catch(function (error) {
//
});

Vue-cli proxyTable 解決開發環境的跨域問題

相關閱讀: API proxy
http-proxy-middleware
package
在vue-cli的config文件index.js里有一個參數叫proxyTable

proxyTable: {
  '/list': {
    target: 'http://api.xxxxxxxx.com',
    changeOrigin: true,
    pathRewrite: {
      '^/list': '/list'
    }
  }
}

這樣我們在寫url的時候,只用寫成/list/1就可以代表api.xxxxxxxx.com/list/1.
那么又是如何解決跨域問題的呢?其實在上面的'list'的參數里有一個changeOrigin參數,接收一個布爾值,如果設置為true,那么本地會虛擬一個服務端接收你的請求并代你發送該請求,這樣就不會有跨域問題了,當然這只適用于開發環境。增加的代碼如上所示

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容