HarmonyOS onInterceptRequest设置WebResourceResponse不生效?

.onInterceptRequest((event)=>{
  if (!event) {
    return;
  }
  // 此处匹配自己想要加载的本地离线资源,进行资源拦截替换,绕过跨域
  Logger.warn(TAG, `getRequestUrl:${event.request.getRequestUrl()}`)
  if (this.schemeMap.has(event.request.getRequestUrl())) {
    let rawfileName: string = this.schemeMap.get(event.request.getRequestUrl())!;
    let mimeType = this.mimeTypeMap.get(rawfileName);
    if (typeof mimeType === 'string') {
      let response = new WebResourceResponse();
      // 构造响应数据,如果本地文件在rawfile下,可以通过如下方式设置
      response.setResponseData($rawfile(rawfileName));
      response.setResponseEncoding('utf-8');
      response.setResponseMimeType(mimeType);
      response.setResponseCode(200);
      response.setReasonMessage('OK');
      response.setResponseIsReady(true);
      response.setResponseHeader(event.request.getRequestHeader())
      Logger.warn(TAG, `getRequestUrl  ==>  rawfileName:${rawfileName}   ResponseData:${response.getResponseData()}  ReasonMessage:${response.getReasonMessage()}  ResponseMimeType:${response.getResponseMimeType()}`)
      return response;
    }
  }
  return null
})

日志打印为:

08-26 16:51:13.090   30028-30028  A03D00/JSAPP   xxx  I     [INFO ] 2024-08-26 16:51:13,090 [Logger:97] [["[WebView]","getRequestUrl  ==>  rawfileName:uni/xxx.uni.carList/package.json   ResponseData:  ReasonMessage:OK  ResponseMimeType:text/plain"]]

前端请求到的resonse为空,实际应该是个文件。

阅读 602
1 个回答