uniapp 安卓 setcookie 如何设置和使用

在uniapp开发安卓应用时,如何正确设置和使用setcookie?我在尝试通过uni.request发送请求时发现cookie无法生效,具体应该在哪里配置?是否需要手动处理跨域或域名匹配的问题?求一个完整的示例代码和注意事项说明。

2 回复

在uniapp中,安卓端设置cookie可使用uni.setStorageSync存储,请求时通过uni.request的header携带。示例:

// 存储
uni.setStorageSync('cookie', 'your_cookie_value');
// 请求时携带
uni.request({
  url: 'xxx',
  header: { 'Cookie': uni.getStorageSync('cookie') }
});

注意:H5端可直接用document.cookie,但安卓需手动处理。


在 UniApp 中,Android 平台设置和使用 Cookie 主要通过 uni.requestheader 参数或 uni.setStorage 实现。以下是具体方法:

1. 使用 uni.request 设置 Cookie

在请求头中添加 Cookie 字段:

uni.request({
  url: 'https://example.com/api',
  method: 'GET',
  header: {
    'Cookie': 'name=value; name2=value2' // 替换为实际 Cookie
  },
  success: (res) => {
    console.log('请求成功', res);
  }
});

2. 存储和读取 Cookie

由于 UniApp 无直接操作 Cookie 的 API,建议用本地存储替代:

// 存储 Cookie 值
uni.setStorageSync('userCookie', 'name=value');

// 读取并使用
uni.request({
  url: 'https://example.com/api',
  header: {
    'Cookie': uni.getStorageSync('userCookie')
  }
});

3. 处理服务器返回的 Cookie

通过 res.header['Set-Cookie'] 获取并保存:

uni.request({
  url: 'https://example.com/login',
  method: 'POST',
  success: (res) => {
    const cookie = res.header['Set-Cookie'];
    if (cookie) {
      uni.setStorageSync('serverCookie', cookie);
    }
  }
});

注意事项:

  • 域名限制:Cookie 受跨域策略限制,需确保域名一致。
  • 持久化:使用 uni.setStorage 可在 App 重启后保留 Cookie。
  • H5 差异:H5 平台可使用 document.cookie,但 App 端不支持。

完整示例(登录场景):

// 登录后保存 Cookie
uni.request({
  url: 'https://example.com/login',
  method: 'POST',
  data: { username: 'user', password: 'pass' },
  success: (res) => {
    const cookie = res.header['Set-Cookie'];
    if (cookie) {
      uni.setStorageSync('authCookie', cookie);
    }
  }
});

// 后续请求自动携带 Cookie
uni.request({
  url: 'https://example.com/profile',
  header: {
    'Cookie': uni.getStorageSync('authCookie')
  }
});

通过以上方法,可在 UniApp Android 端有效管理 Cookie。

回到顶部