需要加载网页的时候添加请求头,在这个onLoadIntercept 中获取不到header,这是什么原因呢?

问题场景描述:需要加载网页的时候添加请求头,loadUrl(this.webUrl, [{ headerKey: ‘App’, headerValue: ‘hm’}])这个方法也试了,添加不成功,然后在onLoadIntercept 获取的请求头也是空的。


HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

onLoadIntercept获取不到请求头,但实际访问的时候请求头已经带上了,以下是测试代码:

import { webview } from '@kit.ArkWeb'; 
 
@Entry 
@Component 
struct Page { 
  webController: webview.WebviewController = new webview.WebviewController() 
  aboutToAppear(): void { 
    webview.WebviewController.setWebDebuggingAccess(true); 
  } 
  build() { 
    Column() { 
      Button('Load xxx').onClick(() => { 
        this.webController.loadUrl('https://m.huawei.com/', [{ headerKey: 'customHK', headerValue: 'customHV' }]) 
      }) 
      Web({ 
        src: '', 
        controller: this.webController 
      }) 
        .onLoadIntercept((event) => { 
          console.log('-------- header: ' + JSON.stringify(event.data.getRequestHeader())) 
          return false; 
        }) 
    } 
    .height('100%') 
    .width('100%') 
  } 
}

监听内部重定向可以参考以下代码:

import webView from '@ohos.web.webview'; 
 
@Entry 
@Component 
struct WebComponent { 
  controller: webView.WebviewController = new webView.WebviewController(); 
  @State loadUrl: string | null = null; 
 
  build() { 
    Column() { 
      Web({ 
        src: 'https://b.huawei.com.cn/user', 
        controller: this.controller, 
      }) 
        .onLoadIntercept((event) => { 
          if (this.loadUrl == null) { // 判断首次加载 
            console.log("loginfo:首次加载"); 
            this.loadUrl = event.data.getRequestUrl(); 
          } 
          if (this.loadUrl != event.data.getRequestUrl() && this.loadUrl != null) { // 非首次加载判断 
            console.log( 
              "loginfo:两次url不一样—上次加载url:" + 
                (this.loadUrl == null ? 'null' : this.loadUrl) + 
                "----本次加载URL:" + 
              event.data.getRequestUrl() 
            ); // 打印加载url 可以删掉 
            this.loadUrl = event.data.getRequestUrl(); // 将此次加载路径保存入变量中,为下次对比做参照 
            if (event.data.isRedirect()) { // 判断服务器重定向 
              console.log("loginfo:服务器重定向"); 
            } else { 
              if (event.data.isRequestGesture()) { // 判断是否发生了交互,未交互就跳转认定为代码重定向,发生了交互认定为正常页面跳转 
                console.log("loginfo:页面跳转"); // 用户交互发生的页面跳转属于正常页面跳转,不属于重定向 
              } else { 
                console.log("loginfo:客户端页面代码重定向"); // 若未发生交互,直接进行页面跳转则认定发生了重定向 
              } 
            } 
          } else { 
            console.log("两次url相同,未生重定向"); // 两次url相同,为发生重定向 
          } 
          return false; 
        }); 
    } 
  } 
}
分享
微博
QQ
微信
回复
2天前
相关问题
HamonyOS 设置webview请求header
351浏览 • 1回复 待解决
HarmonyOS 统一设置webview请求header
405浏览 • 1回复 待解决
地图定位不准,是什么原因啊?
171浏览 • 1回复 待解决
ForEach无法遍历全部数据,是什么原因
1776浏览 • 1回复 待解决
mysql 隔几个小时就需要重启什么原因?
2786浏览 • 1回复 待解决
mac操作系统无法配置ohpm什么原因
2520浏览 • 2回复 待解决