HarmonyOS 鸿蒙Next:arkweb 中,如何对 webview 的加载以及iframe 的加载增加 header

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

HarmonyOS 鸿蒙Next:arkweb 中,如何对 webview 的加载以及iframe 的加载增加 header

目前有两个需求:

1.对特定前缀,进行 url 重写,如:将 token://xx 开头的重写为 https://xx.com

2.对匹配的 host,如 xx.com,在加载 url 时增加 header

我使用 onLoadIntercept 监听url 跳转,再使用 controller.loadUrl(url, headers)手动加载

但是这样的话,对于内部 iframe 我没法进行controller.loadUrl

这个场景下,我该如何实现,求赐教

5 回复
楼主您好,webview目前无法对iframe进行增加header,只能对url增加。

我队对url增加失败

.onControllerAttached(async ()=> { this.heads = [{ headerKey: “username”, headerValue: this.userInfo.userId.toString()}] this.controller.loadUrl(this.urlPath,this.heads) }

.onLoadIntercept((event) => { console.log(‘requestHeader:’ + event.data.getRequestHeader()) }

打印的。requestHeader: 是空

内部的不应该是在你的html里处理吗,webview 应该是拿不到iframe的

在HarmonyOS的ArkWeb环境中,为WebView及iframe的加载增加HTTP请求头,通常需要通过自定义WebView的加载行为来实现。由于ArkWeb是基于Chromium内核的,你可以通过拦截网络请求来添加自定义的Header。这通常涉及到实现WebViewClient或类似接口,并重写其网络请求相关的回调方法,如shouldInterceptRequest

在ArkWeb的具体实现中,你需要查找是否有对应的API或方法支持这一功能。如果没有直接的API,可能需要通过JNI(Java Native Interface)调用底层Chromium的功能或寻找其他间接方式。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部