uni-app升级新版本后uni.request头中的cookie每次请求都不一致 导致session鉴权机制失效
uni-app升级新版本后uni.request头中的cookie每次请求都不一致 导致session鉴权机制失效
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | 最新 | |
| HBuilderX | 3.2.0 |
示例代码:
升级新版本后uni.request头中的cookie每次请求都不一致,导致session鉴权机制失效;
操作步骤:
升级新版本后uni.request头中的cookie每次请求都不一致,导致session鉴权机制失效;
预期结果:
升级新版本后uni.request头中的cookie每次请求都不一致,导致session鉴权机制失效;
实际结果:
升级新版本后uni.request头中的cookie每次请求都不一致,导致session鉴权机制失效;
bug描述:
升级新版本后uni.request头中的cookie每次请求都不一致,导致session鉴权机制失效;
更多关于uni-app升级新版本后uni.request头中的cookie每次请求都不一致 导致session鉴权机制失效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app升级新版本后uni.request头中的cookie每次请求都不一致 导致session鉴权机制失效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个问题通常是由于uni-app新版本对uni.request的默认行为进行了调整,导致每次请求时自动携带的cookie不一致,从而破坏了基于session的鉴权机制。
主要原因: 在较新版本的uni-app中,uni.request默认可能不会自动管理cookie的持久化,或者跨域请求时cookie处理策略有变化,导致每次请求的cookie信息不完整或重新生成。
解决方案:
-
显式设置cookie: 在每次请求时,手动从storage中读取并设置cookie到请求头中:
uni.request({ url: 'your_api_url', header: { 'Cookie': uni.getStorageSync('session_cookie') // 从本地存储获取 }, success: (res) => { // 如果需要更新cookie,保存新的cookie值 if(res.header['Set-Cookie']) { uni.setStorageSync('session_cookie', res.header['Set-Cookie']); } } }); -
检查跨域配置: 如果是跨域请求,确保服务器端设置了正确的CORS头,特别是
Access-Control-Allow-Credentials: true,并且客户端请求需要设置withCredentials: true:uni.request({ url: 'your_api_url', withCredentials: true, // 关键设置 // ... 其他配置 }); -
统一请求拦截器: 建议使用请求拦截器统一处理cookie,避免在每个请求中重复代码:
// 封装request方法 const request = (options) => { const cookie = uni.getStorageSync('session_cookie'); options.header = { ...options.header, 'Cookie': cookie }; return uni.request(options); };

