UniApp中H5跨域APP和小程序不跨域的解决方法
在本地调试模式下,用代理方式解决了H5跨域请求,但运行在手机APP和微信小程序时,请求不到数据,这是因为在uni.request中,APP和微信小程序需要写完整地址
微信小程序记得登录微信平台,把合法https地址填到里面去
就是用条件编译判断方式分开来写,代码如下
export const env = 'dev'
export const HdefBaseUrl = '/api' //H5
export const WdefBaseUrl = env == 'dev' ? 'http://192.168.2.46:8088' : '线上地址' //微信小程序
/**
*
* @param {*} { baseUrl = defBaseUrl, url = '', method = 'GET', header, data, option = {} }
* @return {*}
*/
const request = ({
url = '',
method = 'GET',
header,
data = {},
option = {},
hiddenMsg = false
}) => {
// let token = uni.getStorageSync('token') || '233e4dd0158ee47dfe5c66c95b408ee3'
// header = Object.assign({
// token
// },
// header
// )
return new Promise((resolve, reject) => {
// showLoading()
uni.request({
// #ifdef H5
url: HdefBaseUrl + url,
// #endif
// #ifndef H5
url: WdefBaseUrl + url, // 非H5端即微信小程序或App
// #endif
method,
header,
data: data,
sslVerify: false,
...option,
success: response => {
let {
data
} = response
resolve(data)
},
fail: msg => {
uni.showToast({
title: msg,
icon: 'none'
})
reject('fail请求失败' + JSON.stringify(msg))
}
})
})
}
export default request
// #ifdef H5
url: HdefBaseUrl + url,
// #endif
// #ifndef H5
url: WdefBaseUrl + url, // 非H5端即微信小程序或App
// #endif