uni-app 2021年10月29日最新版本uni.request返回结果取不到set-cookie且cookies为空

uni-app 2021年10月29日最新版本uni.request返回结果取不到set-cookie且cookies为空

开发环境 版本号 项目创建方式
Windows windows11 HBuilderX
### 操作步骤:
- 随意一个接口都会出现上述问题

### 预期结果:
- 用postman会有字段

### 实际结果:
- 用最新版编译器出现问题

### bug描述:
- uni.request发请求返回结果没有set-cookie字段且cookies为空,之前用老版本没有这个问题,更新到最新版本就出现问题了!急求解决

更多关于uni-app 2021年10月29日最新版本uni.request返回结果取不到set-cookie且cookies为空的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

建议使用3.3.13版本验证下

更多关于uni-app 2021年10月29日最新版本uni.request返回结果取不到set-cookie且cookies为空的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我在使用内置浏览器调试的时候 同样获取不到Cookies,相反的当我运行到IOS模拟器基座的时候是可以获取到的。

在uni-app的最新版本中,uni.request的返回结果中确实不再直接暴露set-cookie字段,且cookies可能为空。这主要是由于平台差异和安全策略的调整。

主要原因:

  1. 跨平台一致性处理:uni-app需要兼容多个平台(如小程序、App、H5),而各平台对Cookie的处理机制不同。为统一行为,uni-app底层进行了封装,默认可能不会直接返回set-cookie
  2. 安全策略限制:部分平台(如小程序)默认禁止或限制跨域Cookie,导致服务端返回的set-cookie无法被客户端直接获取。

解决方案:

  • 检查请求配置:确保请求的withCredentials属性设置为true(仅H5和App端有效)。示例:
    uni.request({
      url: 'your_api_url',
      withCredentials: true, // 允许携带凭证
      success(res) {
        console.log(res);
      }
    });
    
  • 从响应头中获取:通过res.headerres.headers查看set-cookie,部分平台可能将Cookie信息放在响应头中。示例:
    uni.request({
      url: 'your_api_url',
      success(res) {
        const setCookie = res.header['Set-Cookie']; // 尝试获取响应头
        console.log('Set-Cookie:', setCookie);
      }
    });
回到顶部