UniApp の H5 クロスドメイン APP とミニプログラムがドメインを越えない問題の解決策
ローカル デバッグ モードでは、H5 クロスドメイン リクエストを解決するためにプロキシ メソッドが使用されますが、モバイル APP および WeChat アプレットで実行している場合、データをリクエストできません。これは、uni.request で APP と WeChat アプレットが次の処理を行う必要があるためです。完全なアドレスを入力してください。WeChat
アプレットの場合は、忘れずに WeChat プラットフォームにログインし、有効な 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
// #ifndif H5
url: WdefBaseUrl + url, // 非 H5 端末は WeChat アプレットまたはアプリです
// #endif