uni-app中uni.request每次请求在服务器都生成一个新session,用浏览器查看也是每次请求不同的sessionid
uni-app中uni.request每次请求在服务器都生成一个新session,用浏览器查看也是每次请求不同的sessionid
示例代码:
var that=this;
uni.request({
url:that.app.www+'/vercode?name=register&r='+Math.random(),
data:{
},
success:function(res){
}
})
操作步骤:
var that=this;
uni.request({
//这里的请求地址为php后端语言搭建,更换一下即可
url:that.app.www+'/vercode?name=register&r='+Math.random(),
data:{
},
success:function(res){
}
})
预期结果:
- 应该是每次请求都是同一个PHPSESSIONID
- set-cookie: PHPSESSID=s48js4jd2ulsvvlg790mbbgaiq; expires=Sun, 07-Mar-2021 06:55:47 GMT; Max-Age=1800; path=/
实际结果:
- 出现每次请求都是不同的PHPSESSIONID
- set-cookie: PHPSESSID=nijvnqs48ine58stlooe4431am; expires=Sun, 07-Mar-2021 06:55:45 GMT; Max-Age=1800; path=/
- set-cookie: PHPSESSID=s48js4jd2ulsvvlg790mbbgaiq; expires=Sun, 07-Mar-2021 06:55:47 GMT; Max-Age=1800; path=/
- set-cookie: PHPSESSID=lbh8i9ten1be5krji6gjepqpl4; expires=Sun, 07-Mar-2021 06:58:00 GMT; Max-Age=1800; path=/
bug描述:
一开始没有注意,后面要使用验证码,发现每次验证码填写正确了,后端对不上,打印了提交的参数内容也正确。 然后就检查其他的http请求对不对,发现所有的请求都生成一个新的session。 然后发现相关帖子说是修复了 (升级新版本后uni.request头中的cookie每次请求都不一致,导致session鉴权机制失效,并且服务端会产生大量session),后面我更新了版本,发现3.1.4依旧存在这个问题。
更多关于uni-app中uni.request每次请求在服务器都生成一个新session,用浏览器查看也是每次请求不同的sessionid的实战教程也可以访问 https://www.itying.com/category-93-b0.html
问题已解决。
测试手机端的时候,需要在内置手机浏览器测试,不然每次请求都不同的session
更多关于uni-app中uni.request每次请求在服务器都生成一个新session,用浏览器查看也是每次请求不同的sessionid的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我用谷歌 h5测试的 也不行
刚刚用内置浏览器 发现可以通过测试
内置浏览器是那个 求解
这个问题是由于uni-app在跨平台实现时,不同端的cookie处理机制差异导致的。
在H5端,uni.request会自动携带cookie,与浏览器行为一致。但在App端,默认不会自动保存和发送cookie,导致每次请求服务器都会创建新的session。
解决方案:
- 手动管理cookie:
// 存储cookie
uni.setStorageSync('cookie', res.header['Set-Cookie'])
// 发送请求时携带
uni.request({
url: 'your_url',
header: {
'Cookie': uni.getStorageSync('cookie')
}
})
- 启用跨域cookie(仅H5): 在manifest.json中配置:
{
"h5": {
"devServer": {
"proxy": {
"/api": {
"target": "your_target",
"changeOrigin": true,
"secure": false
}
}
}
}
}