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

1 回复

更多关于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信息不完整或重新生成。

解决方案:

  1. 显式设置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']);
            }
        }
    });
    
  2. 检查跨域配置: 如果是跨域请求,确保服务器端设置了正确的CORS头,特别是Access-Control-Allow-Credentials: true,并且客户端请求需要设置withCredentials: true

    uni.request({
        url: 'your_api_url',
        withCredentials: true, // 关键设置
        // ... 其他配置
    });
    
  3. 统一请求拦截器: 建议使用请求拦截器统一处理cookie,避免在每个请求中重复代码:

    // 封装request方法
    const request = (options) => {
        const cookie = uni.getStorageSync('session_cookie');
        options.header = {
            ...options.header,
            'Cookie': cookie
        };
        return uni.request(options);
    };
回到顶部