HarmonyOS 鸿蒙Next pad中webviewcookie丢失

发布于 1周前 作者 h691938207 来自 鸿蒙OS

HarmonyOS 鸿蒙Next pad中webviewcookie丢失

你好,我这边遇到一个问题,pad上面安装应用,刚开始首次登录进去以后,会调用 webview.WebCookieManager.configCookie(NewAPIConst.HOST, ‘ETEAMSID=’ + result.loginkey);
给webview设置cookie,此时我杀掉应用进程,重新启动,也是调用同样的方法,给webview设置cookie,但是设置不上去,cookie一直为空,请问是什么原因

2 回复

参考这个demo:

import { webview } from '[@kit](/user/kit).ArkWeb';

webview.once("webInited", () => {
 console.info("webInited setCookie");
 webview.WebCookieManager.configCookie("https://www.example.com", 'a=b');
 webview.WebCookieManager.configCookie("https://www.example.com", 'c=d');
 webview.WebCookieManager.configCookie("https://www.example.com", 'e=f');
})

[@Entry](/user/Entry)
[@Component](/user/Component)
struct LoginCookieConfig {
 controller: webview.WebviewController = new webview.WebviewController();

 build() {
   Column() {
     Button('fetchCookieSync')
       .onClick(() => {
         try {
           let value = webview.WebCookieManager.fetchCookieSync('https://www.example.com');
           console.log(`fetchCookieSync cookie value is: ${value}`);
         } catch (error) {
           console.error(`fetchCookieSync failed,error is: ${JSON.stringify(error)}`);
         }
       })
     Web({ src: 'www.example.com', controller: this.controller })
   }
 }
}

针对HarmonyOS鸿蒙Next pad中webview cookie丢失的问题,这通常是由于cookie的管理和持久化存储机制导致的。以下是一些可能的原因和解决方案:

  1. cookie作用域限制:确保为正确的域名设置了cookie。在HarmonyOS中,顶级域名的cookie不会自动传递到二级域名,因此需要为每个需要访问cookie的域名单独设置。
  2. 持久化存储问题:cookie可能没有被正确持久化到存储中。可以尝试在设置cookie后,使用webview提供的持久化机制(如persist()方法)来确保cookie被保存。
  3. 应用重启导致cookie丢失:如果应用在重启后cookie丢失,可能是因为cookie没有被保存到持久化存储中,或者存储的数据在应用重启后被清空。可以检查应用的持久化存储机制,确保cookie在重启后能够被恢复。

综上所述,解决webview cookie丢失的问题需要确保cookie被正确设置、持久化存储,并在应用重启后能够被恢复。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部