下面是封装的部分请求
const Request = (url, method = 'GET', params, contentType = 1) => {
let token = uni.getStorageSync('token')
let cookie = uni.getStorageSync('cookie')
// console.log(state)
let header = {
'Content-Type': contentType === 1 ? 'application/json' : 'application/x-www-form-urlencoded',
'Set-Cookie': token,
// 'Cookie': token
}
if (method == 'GET') {
url = url + formatGetUri(params)
}
// console.log(url)
return new Promise((resolve, reject) => {
uni.request({
url:baseUrl + url,
data: method == 'GET' ? {} : params,
method: method,
header: header,
timeout: 1000000,
success: (res) => {
// console.log(res)
store.dispatch('setErrState',true)
store.dispatch('setBtnLoading',false)
if (res.statusCode==200) {
if(res.data.success){
resolve(res.data.data)
}else{
if(res.data.errorMessage||res.data.message){
uni.showToast({
icon: 'none',
title: res.data.errorMessage||res.data.message
});
}
resolve(res.data)
store.dispatch('setErrState',false)
store.dispatch('log', {
url: url,
time: new Date(),
res
})
}
} else {
store.dispatch('log', {
url: url,
time: new Date(),
res
})
if(res.data.resultCode=='A00003'){
uni.setStorageSync('token','')
utils.router('login',null,3)
}else{
uni.showToast({
icon: 'none',
title: '服务异常,请稍后再试'
});
}
}
},
fail: (err) => {
console.log('request fail', err)
store.dispatch('setBtnLoading',false)
reject(err)
uni.showToast({
icon: 'none',
title: '服务连接异常,请稍后再试'
});
}
})
})
}
4 个回复
小枫叶 - 外包接单加v:wlmk1234567 注明来意
首先,登录之前的话,是不是代表session是不存在的,那么,你请求验证码接口是不需要带session的. 当登录成功的时候才需要保存session
DCloud_Android_DQQ
你的意思是在 chrome环境下 session一直变化?
有人窃斧者 (作者)
在内置浏览器和chrome环境下,没调用一次登录接口,session就会变化一次
2022-02-15 17:49
DCloud_Android_DQQ
看你在好几个地方发了帖子。我简单帮你梳理一下。为什么发了这么多帖子没人回复你。
首先
session 本身是服务器端管理的会话标识。
实现方式有很多包括tomcat提供实现,servlet提供实现,或者基于cookie来实现,甚至你们自己的业务服务器都能自己实现一套。
session错乱,本身就是个你业务上的,服务端上的现象。
这个问题跟前端是没有直接关系。跟uni的框架是没有直接关系。
导致这个问题的可能非常多。
你不把问题阐述清楚。别人也很难,也没有耐心 帮你解决你的业务问题。
第二。
看你发的代码里面,唯一可能与之相关的是
除非你提出的问题是,明确阐述我们提供的api 有什么不符合文档描述的地方。
我们才能帮你处理
有人窃斧者 (作者)
项目发布为H5时出现的这个问题,运行到手机或模拟器时调试没有session一直变化的问题,是不是项目发布为H5时有什么限制之类的
2022-02-16 09:25
小枫叶 - 外包接单加v:wlmk1234567 注明来意
我感觉吧,你可能是对这个东西有什么误解,因为,还是那句话,一般来讲在没登录之前,是不需要存储什么session的,你只是在登录之前,当然你在登录之后,token过期了,那也情有可原,但是你既然有token了,那么在你请求的时候,吧token带给后端,让他去处理就好了,还有,为什么你获取验证码的接口都需要带着token呢,这本身逻辑不通.还有就是你在刷新验证码的时候,不需要动别的地方,只需要请求一个图片就好了
也可能我实现的方式跟你不一样,仅作为参考