HarmonyOS 有关webview Header无法更新的问题?

业务A页面 打开 webivew B页面,第一次打开带了header请求,然后退出webview B页面,然后动态更新了header参数 但是抓包发现。第二次webview的请求是没有header的 其他: headers 里的参数一直有在动态更新,debug发现每次触发 prefetchPage 或 loadUrl 都是更新了header,但是实际请求没有更新,而且header为空了。

阅读 561
1 个回答

prefetchPage会对同一url进行缓存,缓存时间为5min,且无法判断当前url是否缓存,使用prefetchPage对已缓存的url再次请求时不会触发真正的请求,也不会带上header。

使用loadUrl,需要注意的是,在同时使用onControllerAttached时,为了防止Web组件时序问题,在web src处需要写入空字符串。参考API文档:

\#https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-webview-V5\#ZH-CN\_TOPIC\_0000001847210168\_\_setcustomuseragent10

示例代码:

Web({ src: "", controller: this.webViewController })
  .onLoadIntercept(event => {
    if (event && event.data && event.data.getRequestUrl()) {
      let url = event.data.getRequestUrl()
    }
    return false
  })
  .onControllerAttached(() => {
    console.info("yyyyy onControllerAttached")
    let headers = new Array<webview.WebHeader>()
    headers.push({ headerKey: 'AUTHORIZATION', headerValue: 'test value' })
    // this.webViewController.prefetchPage(this.loadUrl, headers)
    this.webViewController.loadUrl(this.loadUrl, headers)
  })
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进