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.request 的 header 参数或 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。

