項目開發過程中遇到了使用axios請求后台接口跨域的問題,網上搜了幾種方案都沒有解決,最后通過配代理的方式解決了,代碼如下:
報錯:

(因為項目打包后,使用時需要多次修改接口ip,所以我把ip單獨定義到了一個文件中)
1、定義ip接口,在/static/下新建文件夾js,新建文件config.js,即:/static/js/config.js,(static文件夾下的文件打包后是原樣輸出的)
// config.js
// 這段代碼是我從網上找到的,其中我用到的字段只有baseURL,其它字段大家任意,有需要的話就定義
window.g = {
baseURL: 'http://192.168.7.111:8091', // 配置服務器地址
mqtt_ip: "39.106.58.252",
mqtt_port: "61623",
mqt_user: "bin",
mqtt_password: "123456"
}
2、定義config.json,同樣是在static文件夾下定義,即:/static/js/config.json,(只要是static文件夾下就行,不一定非要在js下)
{
"baseURL": "http://192.168.7.111:8091"
}
注:定義這個文件的原因是,我們要做跨域請求代理,需要修改/config/index.js,修改方式如下:
// 在index.js中引入config.json
const configJSON = require('../static/js/config.json');
const baseURL = configJSON.baseURL;
// 在index.js下找到proxyTable:{},在這進行編輯
proxyTable: {
'/api': {
target: baseURL,
changeOrigin: true,
pathRewrite: {
'^/api' : ''
}
}
}
3、axios請求
enableDisableEvent(data) {
let postData = {
id: data.id,
sourceStatic: data.sourceState
}
axios.post('/api/web/modules/controller/source/dorp/source', {
params: {
...postData,
}
})
.then(res => {
console.log(res)
})
.catch(err => {
console.log(err)
})
}
注:其中的/api是不能省略的
參考網址:
https://www.cnblogs.com/momozjm/p/7993236.html
https://blog.csdn.net/aliven1/article/details/89927910
打包完后:

