一、官方推薦。愛掏網 - it200.com
cors和插件安裝解決跨域
二、配置uni-app 中 manifest.json->源碼視圖。愛掏網 - it200.com
manifest.json
"h5" : {"devServer" : {"port" : 8080, //本地前端運行端口號"disableHostCheck" : true,"proxy" : {"/api" : { //相當于把目標域名賦值給/api"target" : "http://www.baidu.com:81", //目標接口域名,81表示為端口。愛掏網 - it200.com"changeOrigin" : true, //是否跨域"secure" : false, //設置支持https協議的代理"pathRewrite":{"^/api":""} //有時候不加會不生效得加,填上被賦值的/api。愛掏網 - it200.com}}}}
http請求接口數據
uni.request({url: '/api/getinfo', //這里的api相當于我們填寫的域名,也可以:'/api' + '網址動態尾綴'success: (res) => {console.log(res.data);}
});
這樣請求的接口地址就變為:http://127.X.X.X:8080/api/getinfo
實際這樣請求webpack會解析為請求:http://www.baidu.com:81/getinfo
(? ?科普拓展:當 /api 或者項目其他的 url 前面沒有加 http:// ,則請求的鏈接會自動在前面加上本地IP,而這里正是想要使用本地IP這種效果。愛掏網 - it200.com如果其他時候你訪問的接口前面突然多了本地IP,如:http://127.X.X.X:8080/www.baidu.com:81/getinfo,那就是你沒給接口前面的域名加 http:// )
如圖1-1,1-2,是當封裝了request,傳入的 url 和引用的 url 的示例。愛掏網 - it200.com
(圖1-1)
?(圖1-2)
總結:總之如果想要跨域成功,設置了/api之后,所有的url,都要改成?'/api+尾綴' 或者?'/api' + '尾綴' 的形式。愛掏網 - it200.com或者如:
const rootPath = "/api/";uni.request({url: rootPath + url, //此處的url形參是接口的尾綴。愛掏網 - it200.com
})
最后切記:配置完之后manifest.json文件之后,一定要重啟項目,重啟,重新運行,重跑,否則能弄到頭發掉都看不到效果。愛掏網 - it200.com