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

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


HarmonyOS
2024-11-06 10:37:17
浏览
收藏 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%') 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.

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

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; 
        }); 
    } 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
分享
微博
QQ
微信
回复
2024-11-06 18:07:34
相关问题
地图定位不准,是什么原因啊?
394浏览 • 1回复 待解决
ForEach无法遍历全部数据,是什么原因
2082浏览 • 1回复 待解决
HamonyOS 设置webview请求header
633浏览 • 1回复 待解决
mysql 隔几个小时就需要重启什么原因?
2923浏览 • 1回复 待解决
mac操作系统无法配置ohpm什么原因
2978浏览 • 2回复 待解决
HarmonyOS 统一设置webview请求header
975浏览 • 1回复 待解决
HarmonyOS Web组件如何附加请求header
197浏览 • 1回复 待解决