a、在manifest.json-源码视图加上如下代码
"h5" : {
"publicPath" : "./", // 部署到二级目录
"devServer" : {
"port" : 80,
"disableHostCheck" : true,
"proxy" : {
"/vjian" : {
"target" : "https://xxxxx/vjian",
"changeOrigin" : true,
"secure" : false,
"pathRewrite" : {
"^/vjian" : ""
}
}
}
},
// 图片地址指向二级目录
"router" : {
"base" : "./"
},
"title" : "xxx",
"domain" : "xxx"
}
b、由于我用了封装的request,并没有使用原生uni.request,故而还需要在封装的请求里设置
import Request from './request'
const http = new Request();
http.setConfig((config) => { /* 设置全局配置 */
config.baseUrl = 'https://xxxx/vjian'; /* 根域名不同 */
// #ifdef H5
config.baseUrl = '/vjian/'; /* h5 - h5单独设置根域名不同 */
// #endif
config.header = {
Timestamp: new Date().getTime(),
'Content-Type': 'application/x-www-form-urlencoded' , // formdata格式
'Access-Control-Allow-Origin': '*'
}
return config
})
http.interceptor.request((config, cancel) => { /* 请求之前拦截器 */
uni.showLoading({ title: '加载中', mask: true });
var authorization = 'noget';
try {
var value = uni.getStorageSync('authorization');
if (value) {
authorization = value ? value.token : 'noget';
}
} catch (e) {
// error
}
config.header.Authorization = authorization
// config.header.Cookie = "loginToken=" + authorization
config.header = {
...config.header,
}
/*
if (!token) { // 如果token不存在,调用cancel 会取消本次请求,但是该函数的catch() 仍会执行
cancel('token 不存在') // 接收一个参数,会传给catch((err) => {}) err.errMsg === 'token 不存在'
}
*/
return config;
})
http.interceptor.response((response) => { /* 请求之后拦截器 */
uni.hideLoading();
// console.log(response);
if(response.data.state === 1000){
uni.showModal({
title: '提示',
content: response.data.message,
showCancel: false,
success: function (res) {
if (res.confirm) {
uni.redirectTo({ url: '/pages/login/login' });
}
}
});
}
return response;
})
export {
http
};