uniapp如何清除指定域名下的所有cookie(plus.cookie)
在uniapp中使用plus.cookie时,如何清除指定域名下的所有cookie?我尝试过plus.cookie.remove方法,但只能删除单个cookie。有没有办法批量删除某个域名下的所有cookie?希望了解具体实现方案或示例代码。
2 回复
在uniapp中,使用plus.cookie.remove()无法直接清除指定域名下的所有cookie。可以尝试以下方法:
- 先获取所有cookie:
plus.cookie.getAll() - 遍历cookie列表,找到目标域名的cookie
- 逐个调用
plus.cookie.remove()删除
注意:H5端不支持plus.cookie,需要使用document.cookie处理。
在 UniApp 中,可以使用 plus.cookie 接口清除指定域名下的所有 Cookie。以下是具体步骤和代码示例:
实现方法
- 获取指定域名的所有 Cookie:使用
plus.cookie.getAll()获取所有 Cookie,然后筛选出目标域名的 Cookie。 - 逐个删除 Cookie:通过
plus.cookie.remove()删除每个匹配的 Cookie。
代码示例
function clearCookiesByDomain(targetDomain) {
// 获取所有 Cookie
let allCookies = plus.cookie.getAll();
// 遍历并删除目标域名的 Cookie
allCookies.forEach(cookie => {
if (cookie.domain.includes(targetDomain)) {
plus.cookie.remove(cookie.domain, cookie.name);
}
});
console.log(`已清除域名 ${targetDomain} 下的所有 Cookie`);
}
// 调用示例:清除 "example.com" 下的所有 Cookie
clearCookiesByDomain("example.com");
注意事项
- 域名匹配:代码使用
includes进行简单匹配,确保目标域名(如example.com)包含在 Cookie 的domain属性中。可根据需求调整匹配逻辑(如精确匹配)。 - 平台限制:
plus.cookie主要在 App 端生效,H5 环境需使用document.cookie处理。 - 权限:确保应用有操作 Cookie 的权限(通常 App 端默认支持)。
替代方案(H5 环境)
若在 H5 环境,需使用浏览器标准 API:
function clearCookiesByDomainH5(domain) {
document.cookie.split(";").forEach(cookie => {
const eqPos = cookie.indexOf("=");
const name = eqPos > -1 ? cookie.substr(0, eqPos).trim() : cookie;
document.cookie = `${name}=;expires=Thu, 01 Jan 1970 00:00:00 GMT; domain=${domain}; path=/`;
});
}
根据实际运行环境选择对应方法即可。

