溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

axios處理跨域問題

發(fā)布時(shí)間:2020-07-30 09:42:01 來源:網(wǎng)絡(luò) 閱讀:740 作者:喝醉的熊 欄目:web開發(fā)

首先npm安裝好axios,其次在main.js中引入:

import axios from 'axios'

Vue.prototype.$axios = axios //把a(bǔ)xios掛載到vue的原型中,在vue中每個(gè)組件都可以使用axios發(fā)送請(qǐng)求
Vue.prototype.HOME = '/api' //重要在于這里,Vue.prototype.HOME = '/api'是一個(gè)定值,默認(rèn)指向localhost,所有修改指向路徑為'/api',配置文件index.js定義的可跨域路徑

第二步就是修改上述所說的config>index.js配置文件

module.exports = {
  dev: {
    // Paths
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
    proxyTable: {     //axios跨域處理
      '/api': {       //此處并非和url一致
        target:'http://192.168.2.80:8081/',
        changeOrigin:true, //允許跨域
        pathRewrite:{
          '^/api': ''
        }
      }
    }
}
....以下省略
}

最后就是在需要跨域的文件中操作了:

 created() {
      var url = this.HOME + '/index***ds/getFe***List';  //HOME變量為已掛載的可跨域域名,這里將其拼接完,成為一個(gè)完整路徑
      this.$axios({  //this代表vue對(duì)象,之前在入口文件中把a(bǔ)xios掛載到了vue中,所以這里直接用this.$axios調(diào)用axios對(duì)象
        method: 'post',
        url: url,
        data: {feedType: 1, page: 1, pagesize: 10}
      }).then(function (res) {
        console.log(res);
      }).catch(function (err) {
        console.log(err);
      })
    },
    這樣就可以成功跨域,拿到后臺(tái)返回的數(shù)據(jù)了。

需要注意的是:在Vue項(xiàng)目中如果我們修改了config里面的文件,請(qǐng)千萬要重新啟動(dòng)項(xiàng)目,重新啟動(dòng)項(xiàng)目,重新啟動(dòng)項(xiàng)目,不然一定會(huì)報(bào)錯(cuò)。

當(dāng)然,這只是在本地可以正??缬蛟L問接口,線上的話,還需要和后臺(tái)協(xié)商處理

升級(jí)到 Vue3 后,會(huì)發(fā)現(xiàn) Vue2 中存放配置的 config 文件夾沒有了,大家不要慌張??梢栽?package.json 文件的同級(jí)目錄下創(chuàng)建 vue.config.js 文件。給出該文件的基礎(chǔ)配置:

module.exports = {
    outputDir: 'dist',   //build輸出目錄
    assetsDir: 'assets', //靜態(tài)資源目錄(js, css, img)
    lintOnSave: false, //是否開啟eslint
    devServer: {
        open: true, //是否自動(dòng)彈出瀏覽器頁面
        host: "localhost", 
        port: '8081', 
        https: false,   //是否使用https協(xié)議
        hotOnly: false, //是否開啟熱更新
        proxy: null,
    }
}

Vue3 解決跨域,內(nèi)容只有第二步配置代理 和 Vue2 不同,其他的一致。

devServer: {
    open: true, //是否自動(dòng)彈出瀏覽器頁面
    host: "localhost", 
    port: '8081',
    https: false,
    hotOnly: false, 
    proxy: {
        '/api': {
            target: 'https://www.v2ex.com/api', //API服務(wù)器的地址
            changeOrigin: true,
            pathRewrite: {
                '^/api': ''
            }
        }
    },
}
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI