HarmonyOS鸿蒙Next中清除单个cookie不生效

HarmonyOS鸿蒙Next中清除单个cookie不生效

通过构造过期的cookie来删除当前对应key的cookie,清理后再次获取cookie发现并没有清理成功,不知道问题出在哪里。

public clearCookieKey(){
    let curUrl = "baidu.com"
    let oldCookieStr: string = webview.WebCookieManager.fetchCookieSync(curUrl)
    let oldCookies = oldCookieStr?.split(";");
    if (oldCookies && oldCookies.length <= 0) {
      return;
    }
    let cookieChanged = false;
    oldCookies.forEach((oldCookie) => {
      if (oldCookie == null) {
        return;
      }
      oldCookie = oldCookie.trim();
      let cookieParts = oldCookie.split("=");
      let key = cookieParts[0] != null ? cookieParts[0].trim() : "";
      if (!key) {
        return;
      }
      if (key === 'test_key') {
        cookieChanged = true;
        let setCookieValue = key + "=; EXPIRES=Thu, 01-Jan-1970 00:00:00 GMT; PATH=/; DOMAIN=baidu.com";
        console.debug(CookieUtils.TAG, " 清除cookie: " + setCookieValue);
        webview.WebCookieManager.configCookieSync(curUrl, setCookieValue)
      }
    })
    if (cookieChanged) {
      webview.WebCookieManager.clearSessionCookieSync()
    }
    console.debug(CookieUtils.TAG, " 清理后的cookie值 = " + webview.WebCookieManager.fetchCookieSync(curUrl));
}

更多关于HarmonyOS鸿蒙Next中清除单个cookie不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS Next中,清除单个cookie需要使用WebCookieManagerdeleteCookie方法。确保传入正确的URL和cookie名称。常见问题包括:1) URL不匹配原设置cookie的域名;2) cookie名称拼写错误;3) Path/HttpOnly等属性限制删除。同步检查WebStorage实例是否与当前页面绑定,异步操作需通过回调确认结果。使用getCookie验证删除是否成功。

更多关于HarmonyOS鸿蒙Next中清除单个cookie不生效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中清除单个cookie不生效的问题,可能是由于以下几个原因导致的:

  1. 域名格式问题:
  • 代码中使用的baidu.com缺少协议头(http/https),建议使用完整域名格式https://baidu.com
  1. cookie设置参数问题:
  • 过期时间设置后,还需要确保path和domain参数与原始cookie完全匹配
  • 建议先通过fetchCookieSync获取完整的cookie信息,确认原始cookie的domain和path值
  1. 同步调用顺序问题:
  • 在调用configCookieSync设置过期cookie后,立即调用clearSessionCookieSync可能会干扰操作
  • 建议移除clearSessionCookieSync调用,仅保留设置过期cookie的操作

修改建议:

  1. 使用完整域名
  2. 确保domain参数与cookie实际domain一致(可能需要包含子域名)
  3. 移除clearSessionCookieSync调用
  4. 检查cookie的path值是否匹配

可以尝试先获取完整cookie信息,确认原始cookie的domain和path后再构造清除语句。

回到顶部