UniApp中H5跨域APP和小程序不跨域的解决方法

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
 

猜你喜欢

转载自blog.csdn.net/Achong999/article/details/130420623