HarmonyOS鸿蒙Next中onInterceptRequest拦截URL并自定义HTML文件,页面加载失败

HarmonyOS鸿蒙Next中onInterceptRequest拦截URL并自定义HTML文件,页面加载失败

问题现象

onInterceptRequest拦截页面Web的src的链接后返回自定义HTML,但是自定义HTML文件里面的script标签里的内容没有加载。

解决措施

设置拦截器时,如果只设置setResponseData,内核将无法识别到这是个HTML文件,需要同时设置setResponseEncoding、setResponseMimeType、setResponseHeader等参数。

代码示例

Web({ src: 'www.example.com', controller: this.controller }) 
  .onInterceptRequest((event) => { 
    console.log('url:' + event.request.getRequestUrl()) 
    this.responseweb = new WebResourceResponse(); 
    var head1:Header = { 
      headerKey:"Connection", 
      headerValue:"keep-alive" 
    } 
    var length = this.heads.push(head1) 
    this.responseweb.setResponseHeader(this.heads) 
    this.responseweb.setResponseData(this.webdata) 
    this.responseweb.setResponseEncoding('utf-8') 
    this.responseweb.setResponseMimeType('text/html') 
    this.responseweb.setResponseCode(200) 
    this.responseweb.setReasonMessage('OK') 
    return this.responseweb 
})

参考链接

WebResourceResponse


更多关于HarmonyOS鸿蒙Next中onInterceptRequest拦截URL并自定义HTML文件,页面加载失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS鸿蒙Next中onInterceptRequest拦截URL并自定义HTML文件,页面加载失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,使用onInterceptRequest拦截URL并自定义HTML文件时,页面加载失败可能由以下原因导致:

  1. HTML文件路径错误:确保自定义HTML文件的路径正确,且文件存在于指定位置。
  2. MIME类型不匹配:确保返回的HTML文件MIME类型为text/html,否则浏览器无法正确解析。
  3. 网络请求未正确处理:在onInterceptRequest中,确保正确拦截并处理了网络请求,返回自定义的HTML内容。
  4. 缓存问题:清除浏览器缓存,确保加载的是最新的HTML文件。
  5. 权限问题:检查应用是否有访问网络和文件的权限。

建议逐步排查以上问题,确保拦截逻辑和文件加载正确。

回到顶部