前言:跨域問題一直是一個頭疼的問題,這里需要詳細(xì)做一篇文章來記錄我解決方式。
webpack 跨域,在這里整理了一下邏輯首先不是為了axios庫來進(jìn)行跨域的,而是直接通過node的webpack設(shè)置代理來完成跨域的。
1、設(shè)置自定義域:
在config目錄下,找到dev.env.js 文件:

文件目錄.png
通過添加:
API_HOST:"http://your.host:yourPort/"
例如:

如圖所示.png
注意:這里一定要填寫好全地址的域名或調(diào)試的ip地址,不要像很多博客中一樣選擇index中替代的地址,這里把步驟放到第一步,做完全強(qiáng)調(diào)!
2、設(shè)置index
在config目錄下找到index.js文件:

文件目錄.png
設(shè)置dev下的proxyTable
proxyTable: {
'/selfName': {
target: 'http://your.host:yourPort/',
changeOrigin: true,
pathRewrite: {
'^/selfName': '/'
}
}
},
例如:

如圖所示.png
3、設(shè)置baseUrl
點(diǎn)擊這里查看如何設(shè)置BASE_URL
現(xiàn)在將baseurl 改為 :
const BASE_URL = /selfName/xxx/xxxx
例如:

如圖所示.png
注意:此處
/app和target與上面配置的API_HOST 對應(yīng)
4、設(shè)置axios的BASE_URL
在route 目錄下的index.js中,這樣使用:
import axios from "axios";
axios.defaults.baseURL = net.BASE_URL // 這里的net參考之前博客如何設(shè)置的靜態(tài)全局常量
以上方法完全完成了dev 調(diào)試的跨域問題,如果是正式版打包的項(xiàng)目需要來進(jìn)行跨域,那么得找到如圖所示的文件:

prod文件.png
回到第一個步驟開始逐步往后重新配置即可實(shí)現(xiàn)。
5、cordova項(xiàng)目中,運(yùn)行在模擬器上的跨域請求:
這里回到BASE_URL上,只需要在原來修改的BASE_URL還原為全域名或者全地址的URL即可,毋須額外操作。