HarmonyOS Web拦截网页动态添加请求头

动态拦截请求,在满足条件时动态给请求加请求头,按官方方法实现,发现白屏,网页无法打开

.onInterceptRequest((event) => {
  if (event) {
    console.log('url:' + event.request.getRequestUrl());
    let url: string = event.request.getRequestUrl();
    //this.responseWeb.setResponseIsReady(false);
    if (url.includes("jtg.com")) {
      if (!this.hasCustomHeader.has(url)) {
        PreferencesUtil.getUser().then(user => {
          if (user.ssoValue) {
            const cookie: string = `Cookie: ${user.ssoName}=${user.ssoValue}`
            Logger.info(TAG, `url:${url},PreferencesUtil:${cookie}`)
            webview.WebCookieManager.configCookieSync(url, cookie);
            this.hasCustomHeader.add((url))
            let headers: Header = {
              headerKey: user.ssoName,
              headerValue: user.ssoValue
            }
            this.heads.push(headers)
            this.responseWeb.setResponseHeader(this.heads);
            this.responseWeb.setResponseIsReady(true);
            Logger.info(TAG, `url:${url},setResponseIsReady:${cookie}`)
          } else {
            webview.WebCookieManager.clearAllCookies()
          }
        })
      }
    }
  }
  this.responseWeb.setResponseIsReady(false);
  return this.responseWeb;
})
HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

请检查是否加了以下权限

Column() {
  Web({ src: "https://xxx", controller: this.webviewController })
    .onControllerAttached(() => {
      this.webviewController.setCustomUserAgent(this.userAgent)
    })//加上以下权限
    .fileAccess(true)
    .javaScriptAccess(true)
    .domStorageAccess(true)
    .onlineImageAccess(true)
}

添加请求头:

import { webview } from '@kit.ArkWeb';
@Entry
@Component
struct WebComponent {
  controller: webview.WebviewController = new webview.WebviewController();

  build() {
    Column() {
      Web({ src: 'www.huawei.com', controller: this.controller})
        .backgroundColor(Color.White)
        .onControllerAttached(() => {
          this.controller.setCustomUserAgent('Mozilla/5.0 (Linux; Android 9; VRD-AL10; HMSCore 6.3.0.331) ' +
            'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.88 HuaweiBrowser/12.0.4.1 Mobile Safari/537.36')
        })
        .onLoadIntercept((event) => {
          if (!event){
            return
          }
          console.log('url====',event.data.getRequestUrl())
          if (event.data.getRequestUrl().includes('www.example')){
            this.controller.loadUrl($rawfile('detail.html'), [{
              headerKey: 'test',
              headerValue: '123456'
            }])
            return true
          }

          return false
        })
        .domStorageAccess(true)
        .javaScriptAccess(true)
        .imageAccess(true)
        .onlineImageAccess(true)
        .fileAccess(true)
        .mixedMode(MixedMode.All)
    }
  }
}
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS web拦截网络请求
176浏览 • 1回复 待解决
HarmonyOS web组件怎么拦截请求
682浏览 • 1回复 待解决
web组件如何设置请求
496浏览 • 1回复 待解决
HarmonyOS Web组件如何附加请求header
203浏览 • 1回复 待解决
HarmonyOS Web组件实现异步的请求拦截
115浏览 • 1回复 待解决
Web组件拦截页面请求响应
1084浏览 • 1回复 待解决
HarmonyOS 请求信息修改
236浏览 • 1回复 待解决
HarmonyOS 请求设置cookie
272浏览 • 1回复 待解决
HarmonyOS WebView拦截网络请求
598浏览 • 1回复 待解决
HarmonyOS Web加载网页白屏
664浏览 • 1回复 待解决
HarmonyOS Http请求问题咨询
286浏览 • 1回复 待解决
HarmonyOS web无法拦截路由
24浏览 • 1回复 待解决