HarmonyOS 使用axios请求网页,并且使用onInterceptRequest进行响应,content-length一直是0,是什么原因?
用以下代码,在webview调试器能看到文件的response,content-type用的也是axios的responseHeader,content-length也有值,但是放在responseWeb中后content-length就为0了,还有Content-Type会被自动加上chatset=utf-8,是什么原因呢?主要是没办法把加载下来的html渲染在页面上
onInterceptRequest = (event: IonInterceptRequest) => {
  const url = event.request.getRequestUrl()
  const _headers = event.request.getRequestHeader()
  console.info('getRequestHeader: ',JSON.stringify(_headers))
  const responseWeb = new WebResourceResponse();
  const headerValue: string | undefined = _headers.find(item => item.headerKey === 'User-Agent')?.headerValue;
  axios.get(url, {
    headers: {
      os_platform: 'HARMONY_NEXT_OS',
      'User-Agent': headerValue,
      'userAgent': headerValue
    }
  }).then((resp: AxiosResponse) => {
    const html: string = resp.data
    try {
      const harmonyHeaders = this.transferResponseHeaderStruct(resp.headers);
      console.info('new headers', JSON.stringify(harmonyHeaders))
      responseWeb.setResponseHeader(harmonyHeaders)
      responseWeb.setResponseData(html)
      responseWeb.setResponseEncoding('utf-8');
      responseWeb.setResponseMimeType(resp.headers['content-type'].replace(/[;]?\s?charset=utf-8/, ''));
      responseWeb.setResponseCode(200);
      responseWeb.setReasonMessage('OK');
      responseWeb.setResponseIsReady(true);
    } catch(e) {
      console.error('error ?', e.message)
    }
  })
  responseWeb.setResponseIsReady(false);
  return responseWeb;
}
        HarmonyOS
      
        赞
        
 收藏 0
 回答 1
 
        待解决
        
相关问题
 下图是目录结构,错误一直出现什么原因? 
3156浏览  • 1回复 待解决
HarmonyOS 沉浸式获取导航栏高度一直是0 
1334浏览  • 1回复 待解决
HarmonyOS CustomDialogController一直是undefined 
1473浏览  • 1回复 待解决
HarmonyOS  Profiler TIme 一直是initializing 
1179浏览  • 1回复 待解决
HarmonyOS  报错 window load content failed是什么原因 
2210浏览  • 1回复 待解决
HarmonyOS  使用地图出来一直是绿色背景色没有地图 
1185浏览  • 1回复 待解决
JSAPI,fetch接口和httprequest接口请求回来的data.length都小于Content-Length怎么处理? 
5247浏览  • 1回复 待解决
HarmonyOS 使用http请求,接口请求一直超时 
1380浏览  • 1回复 待解决
振弦采集模块测试传感器一直保持一个频率值不变是什么原因? 
3325浏览  • 0回复 待解决
HarmonyOS 使用drawTextBlob画中文出不来,是什么原因? 
1174浏览  • 1回复 待解决
Web组件无法打开指定链接一直是空白,浏览器正常 
1676浏览  • 1回复 待解决
鸿蒙 Slider 拖动条的滑块默认一直是白色,可以改变颜色么? 
5893浏览  • 1回复 待解决
HarmonyOS TextInput控件onKeyEvent一直无响应 
1141浏览  • 1回复 待解决
http 请求一直报 2300058 
2870浏览  • 0回复 待解决
需要加载网页的时候添加请求头,在这个onLoadIntercept 中获取不到header,这是什么原因呢? 
1285浏览  • 1回复 待解决
HarmonyOS AVPlayer创建失败,5400102是什么原因? 
1827浏览  • 1回复 待解决
axios使用问题,如下图参数一直报错,请问这边应该怎么去写?能否给一个axios的使用demo? 
852浏览  • 1回复 待解决
地图定位不准,是什么原因啊? 
1220浏览  • 1回复 待解决
ForEach无法遍历全部数据,是什么原因 
3027浏览  • 1回复 待解决
NOVER8更新鸿蒙后,手机使用散热变差了,是什么原因 
6208浏览  • 2回复 待解决
HarmonyOS DevEco Studio 打包构建很慢是什么原因 
1441浏览  • 1回复 待解决
设备卡死,无法重启,是什么原因啊? 
1837浏览  • 1回复 待解决
HarmonyOS 使用安全控件保存图片,授权一直失败 
859浏览  • 1回复 待解决
Docker 容器异常退出,code 139 是什么原因? 
7495浏览  • 1回复 待解决
info 获取是失败 一直为空 
3197浏览  • 1回复 待解决





















"content-length 总是 0" 通常出现在 HTTP 请求或响应中,表示请求或响应的消息体内容长度为 0 字节。
可能原因及解决方法:
客户端问题:
客户端未正确设置 Content-Length 头:确保在发送请求时,如果你知道消息体长度,需要在请求头中正确设置 Content-Length。
客户端在发送数据前计算了 Content-Length,但实际发送的数据长度与计算的不匹配。
服务器问题:
服务器代码有误,如在处理请求体前就已经向客户端发送了响应。
服务器在读取请求体时出现了问题,如流的读取方式不正确,导致没有正确读取到数据。
解决方法:
对于客户端,检查代码确保在发送请求前计算并设置了正确的 Content-Length。
对于服务器端,检查代码确保在发送响应头之前没有向输出流中写入任何数据,并且正确读取了请求体中的数据。