欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

利用vue怎么解決跨域問(wèn)題

利用vue怎么解決跨域問(wèn)題?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

成都創(chuàng)新互聯(lián)公司成立于2013年,我們提供高端重慶網(wǎng)站建設(shè)成都網(wǎng)站制作網(wǎng)站設(shè)計(jì)、網(wǎng)站定制、全網(wǎng)營(yíng)銷推廣小程序開發(fā)、微信公眾號(hào)開發(fā)、網(wǎng)站推廣服務(wù),提供專業(yè)營(yíng)銷思路、內(nèi)容策劃、視覺(jué)設(shè)計(jì)、程序開發(fā)來(lái)完成項(xiàng)目落地,為水泥攪拌車企業(yè)提供源源不斷的流量和訂單咨詢。

如何在vue里面優(yōu)雅的解決跨域,路由沖突問(wèn)題

當(dāng)我們?cè)诼酚衫锩媾渲贸梢韵麓砜梢越鉀Q跨域問(wèn)題

 proxyTable: {
   '/goods/*': {
    target: 'http://localhost:3000'
   },
   '/users/*': {
    target: 'http://localhost:3000'
   }
  },

這種配置方式在一定程度上解決了跨域問(wèn)題,但是會(huì)帶來(lái)一些問(wèn)題,

比如我們的vue 路由 也命名為 goods,這時(shí)候就會(huì)產(chǎn)生了沖突,

如果項(xiàng)目中接口很多,都在這里配置是很麻煩的,也容易產(chǎn)生路由沖突。

正確的姿勢(shì)

如果把所有的接口,統(tǒng)一規(guī)范為一個(gè)入口,在一定程度上會(huì)解決沖突

把以上配置統(tǒng)一前面加上 /api/

 proxyTable: {
   '/api/**': {
    target: 'http://localhost:3000'
   },
  },

如果我們配置成這種方式,在使用http請(qǐng)求的時(shí)候就會(huì)發(fā)生變化,會(huì)在請(qǐng)求前面加上一個(gè)api,相對(duì)路由也會(huì)發(fā)生變化,也會(huì)在接口前面加上api,這樣也會(huì)很麻煩,我們可以使用以下方式來(lái)解決這個(gè)問(wèn)題

 proxyTable: {
   '/api/**': {
    target: 'http://localhost:3000',
    pathRewrite:{
     '^/api':'/'
    }
   },
  },

上面這個(gè)代碼,就是把咱們虛擬的這個(gè)api接口,去掉,此時(shí)真正去后端請(qǐng)求的時(shí)候,不會(huì)加上api這個(gè)前綴了,那么這樣我們前臺(tái)http請(qǐng)求的時(shí)候,還必須加上api前綴才能匹配到這個(gè)代理,代碼如下:

 logout(){
  axios.post('/api/users/logout').then(result=>{
   let res = result.data;
   this.nickName = '';
   console.log(res);
  })
 },
 getGoods(){
  axios.post('/api/goods/list').then(result=>{
   let res = result.data;
   this.nickName = '';
   console.log(res);
  })
 }

我們可以利用axios的baseUrl直接默認(rèn)值是 api,這樣我們每次訪問(wèn)的時(shí)候,自動(dòng)補(bǔ)上這個(gè)api前綴,就不需要我們自己手工在每個(gè)接口上面寫這個(gè)前綴了

在入口文件里面配置如下:

import Axios from 'axios'
import VueAxios from 'vue-axios'

Vue.use(VueAxios, Axios)
Axios.defaults.baseURL = 'api'

如果這配置 'api/' 會(huì)默認(rèn)讀取本地的域

上面這樣配置的話,不會(huì)區(qū)分生產(chǎn)和開發(fā)環(huán)境

在config 文件夾里面新建一個(gè) api.config.js 配置文件

const isPro = Object.is(process.env.NODE_ENV, 'production')

module.exports = {
 baseUrl: isPro ? 'http://www.vnshop.cn/api/' : 'api/'
}

然后在main.js 里面引入,這樣可以保證動(dòng)態(tài)的匹配生產(chǎn)和開發(fā)的定義前綴

import apiConfig from '../config/api.config'

import Axios from 'axios'
import VueAxios from 'vue-axios'

Vue.use(VueAxios, Axios)
Axios.defaults.baseURL = apiConfig.baseUrl

經(jīng)過(guò)上面配置后,在dom里面可以這樣輕松的訪問(wèn),也不需要在任何組件里面引入axios模塊了。

 logout(){
  this.$http.post('/users/logout').then(result=>{
   let res = result.data;
   this.nickName = '';
   console.log(res);
  })
 },
 getGoods(){
  this.$http.post('/goods/list').then(result=>{
   let res = result.data;
   this.nickName = '';
   console.log(res);
  })
 }

最終代碼

在代理里面配置
 

 proxyTable: {
   '/api/**': {
    target: 'http://localhost:3000',
    pathRewrite:{
     '^/api':'/'
    }
   },
  },

在config里面的api.config.js 配置

在config 文件夾里面新建一個(gè) api.config.js 配置文件

const isPro = Object.is(process.env.NODE_ENV, 'production')

module.exports = {
 baseUrl: isPro ? 'http://www.vnshop.cn/api/' : 'api/'
}

關(guān)于生產(chǎn)和開發(fā)配置不太了解

可以去 dev-server.js 里面看配置代碼

const webpackConfig = (process.env.NODE_ENV === 'testing' || process.env.NODE_ENV === 'production') ?
 require('./webpack.prod.conf') :
 require('./webpack.dev.conf')

在main.js 入口文件里面配置

import apiConfig from '../config/api.config'

import Axios from 'axios'
import VueAxios from 'vue-axios'

Vue.use(VueAxios, Axios)
Axios.defaults.baseURL = apiConfig.baseUrl
在dom里面請(qǐng)求api的姿勢(shì)
 logout(){
  this.$http.post('/users/logout').then(result=>{
   let res = result.data;
   this.nickName = '';
   console.log(res);
  })
 },
 getGoods(){
  this.$http.post('/goods/list').then(result=>{
   let res = result.data;
   this.nickName = '';
   console.log(res);
  })
 }

看完上述內(nèi)容,你們掌握利用vue怎么解決跨域問(wèn)題的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

文章名稱:利用vue怎么解決跨域問(wèn)題
分享網(wǎng)址:http://www.chinadenli.net/article8/ggipop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作虛擬主機(jī)App設(shè)計(jì)域名注冊(cè)外貿(mào)建站服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)