HarmonyOS webview设置cookie问题?

需要给webview设置cookie,文档里建议是在webview.once(“webInited”, (data) =\> {}方法里设置,但是该方法只会调用一次,设置cookie方法用的是webview.WebCookieManager.configCookieSync(),该方法官方建议传完整url,此时获取不到完整url,如果想要每次进webview页面都设置cookie,请问在什么时机设置?

阅读 531
1 个回答

可以在web组件的onPageBegin回调中进行url的加载和设置cookie,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5\#onpagebegin

参考如下即可设置:

import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct WebComponent {
  @State message: string = 'Hello World';
  @State url: string = "aaa";
  @Require @Prop
  controller: webview.WebviewController = new webview.WebviewController();
  testCookie : string = "a=myTestCookie=123,path=/";
  build() {
    Column() {
      Button('fetchCookieSync')
        .onClick(() => {
          try {
            let value = webview.WebCookieManager.fetchCookieSync('xxx');
            console.log("fetchCookieSync cookie = " + value);
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
          }
        })

      Web({
        src: "xxx",
        controller: this.controller
      })
        .onControllerAttached(()=>{
          webview.WebCookieManager.configCookieSync('xxx', this.testCookie);
          this.controller.setCustomUserAgent('Mozilla/5.0 (Linux; xxx; VRD-AL10; HMSCore 6.3.0.331) AppleWebKit/537.36 (KHTML, like Gecko) xx/99.0.4844.88 HuaweiBrowser/12.0.4.1 Mobile Safari/537.36')
        })
    }
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进